Помощник
|
Preg_replace |
panika
|
Сообщение
#1
|
||
|
|
||
|
|||
sc2r2bey |
19.12.2010, 17:15;
Ответить: sc2r2bey
Сообщение
#2
|
|
это что за изврат? и откуда берется [level>0]Вы авторизованы[/level]? и как отображется и где храниться?
|
|
|
panika
|
Сообщение
#3
|
|
Вопросом на вопрос конечно не очень хорошо, но так как я сам так иногда делаю отвечу:
Это обрабатываются шаблоны, раньше у меня было [admin][/admin][moder][/moder][auth][/auth][no-auth][/no-auth], но я подумал вот это и есть извращение, а то что я решил сделать, это ни что иное как облегчение кода и нервов. [level>0]Вы авторизованы[/level] [level<1>2]Гость, Администратор[/level] или [level=0,3]Гость, Администратор[/level] Вообще мне бы хотелось не слушать что это извращение а заставить это регулярное выражение работать как надо. |
|
|
sc2r2bey |
19.12.2010, 22:06;
Ответить: sc2r2bey
Сообщение
#4
|
|
что это за шаблон такой откуда он берется и где выводится?
-------------------- программирую web и для we |
|
|
panika
|
Сообщение
#5
|
|
точно могу сказать что выше приведенная строка HTML находиться в переменной $source
и нужно чтобы функция приняла level_blocks('Вы авторизованы','>0') я вроде достаточно сказал, чтобы мне смогли помочь |
|
|
sc2r2bey |
19.12.2010, 22:35;
Ответить: sc2r2bey
Сообщение
#6
|
|
а причем здесь html?
-------------------- программирую web и для we |
|
|
panika
|
Сообщение
#7
|
|
а зачем вы спросили а зачем здесь html?
задавайте все вопросы в одно сообщение, пожалуйста |
|
|
sc2r2bey |
20.12.2010, 0:04;
Ответить: sc2r2bey
Сообщение
#8
|
|
я задал вам их в первом посте, но вы выбрали непонимать, что творите
-------------------- программирую web и для we |
|
|
panika
|
Сообщение
#9
|
|
Все сделал, правда потратил на это много нервов.
[php]$source = "[level>6]2[level<2]Вы авторизованы[/level]232134[/level]"; $level = 8; function level_blocks($source, $more=''){ $regexp = "#\\[level([^\]\[]*?)\\]((?:[^[]|(?R))+)\\[/level\\]#"; if(is_array($source)){ $more = $source[1]; $source = $source[2]; preg_match("/<([0-9]+)/i", $more, $under); $AOpenForU = isset( $under[1] )? intval( $under[1] ) : false; preg_match("/>([0-9]+)/i", $more, $larger); $AOpenForL = isset( $larger[1] )? intval( $larger[1] ) : false; if( ( !$AOpenForL || $AOpenForL > $level ) && ( !$AOpenForU || $AOpenForU < $level ) ){ preg_match($regexp, $source, $output); if( count( $output ) > 0 ) return preg_replace_callback( $regexp, "level_blocks", $source ); return $source; }else return ''; return false; }else{ return preg_replace_callback( $regexp, "level_blocks", $source ); } } $source = level_blocks( $source ); print $source;[/php] 2232134
|
|
|
Гость_0_* Гость_0_* |
20.12.2010, 18:58;
Ответить: Гость_0_*
Сообщение
#10
|
|
marker, казалось бы несколько трочек кода, а на них потрачено несколько дней
Всё приходит с опытом, а нервничать не нужно, это не поможет. Особенно с регулярными выражениями, там нужны спокойствие и внимательность. |
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 11:16 |