Помогите сделать bb код
1.
3DwEp (13.04.2010 / 20:05)
Всем привет.. Помогите пожалуйста сделать bb код на мотор такого типа [ball=30]текст[/ball]
если у пользователя меньше 30 баллов допустим, то чтобы он не мог видеть текст.. Что нужно для этого? заранее спасибо)
2.
Lugaro (13.04.2010 / 20:40)
Как то так
$msg = preg_replace('#\[ball=([0-9]+)\](.*?)\[/ball\]#sie', "твоя_функция('$1', '$2')", $msg);
Создай функцию "твоя_функция" в которой проверяй выводить ли юзеру
3.
ramzes (13.04.2010 / 20:48)
<?php
function hide_ball($text){
global $udata;
if($udata[36]>=$text[1]){
return 'hide text: '.$text[2];
}else{
return 'this text hidden';
}
}
....
function bb_code($msg){
...
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i', hide_ball, $msg);
...
}
?>
[ball>50] hello! [/ball]
4.
WCO (13.04.2010 / 20:54)
3.
ramzes,
может
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i',
'hide_ball
', $msg);
?
5.
Удаленный (13.04.2010 / 20:57)
4.
WCO, Нет
6.
WCO (13.04.2010 / 21:02)
хм, почему ?
7.
WCO (13.04.2010 / 21:04)
будет же ошибка, необьявленная константа
hide_ball
8.
3DwEp (13.04.2010 / 21:06)
ramzes, почему-то при добавлении каждого сообщения теперь пишет: this text hidden
9.
Удаленный (13.04.2010 / 21:12)
7.
WCO, Ето не константа а функция.
Че неюзал preg_replace_callback
10.
WCO (13.04.2010 / 21:14)
TLENSi (Сегодня / 21:12)
7. WCO, Ето не константа а функция.
Че неюзал preg_replace_callback
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i',
hide_ball, $msg);
hide_ball - нужно указать что это строка, обрамить ' или "
11.
ramzes (13.04.2010 / 21:23)
Это не строка, а функция. Тупо читаем выше, человек попробывал, ошибки не выдало. Вывод?
8 global
$udata; замени на переменную в которой массив профиля храниться, я от балды написал, не юзаю мотор. И 36 ячейка может уже другая
тебе виднее должно быть где баллы хранятся
12.
Удаленный (13.04.2010 / 21:27)
10.
WCO, Попробуй
1. Сейчас дам код
13.
WCO (13.04.2010 / 21:27)
в стандарте в моторе отключен показ ошибок, а это Notice;
<?php
error_reporting(E_ALL);
function somefunct(){};
preg_replace_callback('/a{3}/','somefunct','328aaa95782aaa42г3957aaa423908');
echo '<br />';
preg_replace_callback('/a{3}/',somefunct,'328aaa95782aaa42г3957aaa423908');
?>
Notice: Use of undefined constant somefunct - assumed 'somefunct' in home/file.php(2081) : eval()'d code on line 6
14.
ramzes (13.04.2010 / 21:28)
Там по моему просто не принципиально в кавычках или нет. Лучше конечно в кавычках, но и без них вроде работает..
15.
ramzes (13.04.2010 / 21:30)
Ну может и так. Не суть важно
две кавычки добавить не сложно.
16.
WCO (13.04.2010 / 21:31)
если интерпретатор не "знает" константу somefunct, он переводит её в строку и использует, выводя ошибку.
если бы до этого было
типа
<?php
define('somefunct','somefunct');
?>
то все сработает
17.
WCO (13.04.2010 / 21:32)
15, не сложно.
Это нужны прививать внутри-мышечно
18.
Удаленный (13.04.2010 / 21:35)
Вот юзай наздорове
<?
$udata[36]=24;
function hide_ball($text){
global $udata;
if(eregi('/[^0-9]/',$text[0]))
{return $text[0];}
if($udata[36]>=$text[1]){
return 'hide text: '.$text[2];
}else{
return 'this text hidden';
}
}
$msg='[ball>30]Hello[/ball]';
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i', hide_ball, $msg);
echo $msg;
19.
Удаленный (13.04.2010 / 21:37)
Толькоже ставь не в bbcode а у вывод с форума ато зачислять будет по балам создавшего а не читающего
20.
Удаленный (13.04.2010 / 21:46)
Секундочку сейчас подправлю
21.
Удаленный (13.04.2010 / 21:55)
<?
$udata[36]=30;
function hide_ball($text){
global $udata;
if(eregi('/[^0-9]/',$text[1]))
{return $text[0];}
if($udata[36]>=$text[1]){
return 'hide text: '.$text[2];
}else{
return 'this text hidden';
}
}
$msg='Tlens [ball>30]Hello[/ball] word';
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i', hide_ball, $msg);
echo $msg;
22.
WCO (13.04.2010 / 22:04)
прошу прощение за оффтоп, но не легче ли intval($text[1]), тем более что POSIX выражения будет исключены из ядра в PHP v6
23.
Удаленный (13.04.2010 / 22:12)
WCO, Возможно у тибя старая версия пхп у меня ошибок недавало никогда и работало отлично.
Хотя на php.net ненашол такого примера
24.
WCO (13.04.2010 / 22:14)
ты о чем именно?
если о 13м посте, то я не зря указал "error_reporting(E_ALL);"
а у меня 5.2.4
25.
Удаленный (13.04.2010 / 22:14)
http://php.net/manual/en/function.preg-replace-callback.php
26.
WCO (13.04.2010 / 22:15)
тут не функция виновата xD
тут, незначительная ошибка синтаксиса что ли
27.
Удаленный (13.04.2010 / 22:15)
У меня тоже включен показ
28.
WCO (13.04.2010 / 22:18)
хочешь сказать что у тебя нет ошибок при использовании
$msg = preg_replace_callback('|\[ball>([0-9]+)\](.*?)\[\/ball\]|i', hide_ball, $msg);
?
при условии что константа 'hide_ball' не определена, и директива error_reporting принимает значение E_ALL ???
29.
3DwEp (13.04.2010 / 22:18)
Блин чёто вообще запутался куда что писать %)
30.
Удаленный (13.04.2010 / 22:19)
Вот мой кусочек кода работает нежалуется со включенными оповещениями
<?
function tlens_back($m){
global $url;
return 'href='.$m[1].str_replace('{rand}',rand(0,999),$url).$m[1].'>';
}
//------------------------------------------------------------------//
function tlens($f)
{return preg_replace_callback('/href=(.).+?.>/si', tlens_back,$f);}
ob_start(tlens);}
31.
3DwEp (13.04.2010 / 22:32)
Блин так и не разобрался куда что писать
32.
WCO (13.04.2010 / 22:33)
какой именно мотор (18,19), модов не ставил?
сейчас сделаем
33.
Удаленный (13.04.2010 / 22:34)
Вощем если ненравится ставь кавычки.
34.
Удаленный (13.04.2010 / 22:37)
А куда в bb code на выход а не вход.
Впрынципе ставь как ставил ето просто у меня обрабатуется сообщение перед записю и выходом.
35.
Удаленный (13.04.2010 / 22:40)
28 Сейчас протестирую
36.
3DwEp (13.04.2010 / 22:41)
Мотор 18, бб код на выход
37.
3DwEp (13.04.2010 / 22:42)
32, модов не ставил, пробую на чат установить бб код.. сделай пожалуйста)
38.
Удаленный (13.04.2010 / 22:43)
WCO, Все верно ошибка прилитела
39.
WCO (13.04.2010 / 22:46)
37, так нужно на чат или форума?
40.
Артур (13.04.2010 / 23:21)
21, какой смысл проверять $text[1] на наличие цыфры? preg_replace_callback не пропустит не цыфры. Только лишний код.
41.
ramzes (13.04.2010 / 23:25)
Ну вы развели.. Как я понял не найдя константу, будет происходить поиск функции с тем же именем, работать будет по выведет "варнинг".. Вроде так.
Код что я да полностью рабочий, кавычки добавить и $udata изменить на массив с профилем. Все. Ни чего больше не надо. Простейшая фишка же
42.
WCO (13.04.2010 / 23:26)
темку можно крыть, автору уже не нужно))
43.
Макс (27.04.2010 / 02:56)
Дайте пожалуйста правильный код :-) и напиши где именно где прописать
URL:
https://visavi.net/topics/8174