Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Тэги bbCode [b][/b]

Сообщения:  [1-7] 

 
 автор: Trianon   (12.04.2006 в 20:16)   письмо автору
 
   для: Borbosso   (12.04.2006 в 19:30)
 

str_replace быстрее работает - соответственно меньше грузит сервер.
Через preg_replace оба тега (открывающий и закрывающий) меняются одним вызовом.
Соответственно - проще писать.
С другой стороны, str_replace позволяют применять массивы в качестве параметров поиска и замены, так что все простые замены можно выполнить одним вызовом.
Опять же, не смотря на весь "интеллект" регулярных выражений, этот механизм в принципе не умеет работать со структурированными данными, так что ожидать, что он проверит и корректно сформирует вложенную теговую структуру - не стоит.
С другой стороны через preg можно довольно легко и быстро написать замену с параметрами, вроде COLOR=? в этом примере. Через str_replace придется расписывать каждый случай.

Конструкции с preg обычно выглядят изящнее, компактнее, лаконичнее. И позволяют быстрее добиться желаемых результатов.
С другой стороны с ними надо быть крайне осторожным, когда работаешь с добавляемым html-контентом. Их силой можно увлечься так, что это выйдет боком.
За примером далеко ходить не надо. Форум phpbb не так давно имел серьёзную уязвимость (highlight-дыра) обусловленную применением preg для замены контекста поиска сообщений на ссылки. Причем заткнули её авторы явно не намертво, т.к. пошли по пути усложнения паттерна.

А выбор остается за разработчиком.

   
 
 автор: Borbosso   (12.04.2006 в 19:30)   письмо автору
 
   для: cheops   (07.04.2006 в 12:57)
 

А в чём раздница ?

   
 
 автор: Panker   (07.04.2006 в 14:16)   письмо автору
 
   для: cheops   (07.04.2006 в 12:57)
 

Хех )) Мой код обсуждают :)

   
 
 автор: cheops   (07.04.2006 в 12:57)   письмо автору
 
   для: Oligarx   (07.04.2006 в 08:43)
 

Здесь разумнее воспользоваться регулярными выражениями вида
<?php
    $comments 
preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$comments);
    
$comments preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$comments);
?>

   
 
 автор: FBI   (07.04.2006 в 10:03)   письмо автору
 
   для: Oligarx   (07.04.2006 в 08:43)
 

=)

   
 
 автор: elenaki   (07.04.2006 в 09:53)   письмо автору
 
   для: Oligarx   (07.04.2006 в 08:43)
 

а где начало тэга b?

$comments = str_replace("[B]","<b>",$comments); 

   
 
 автор: Oligarx   (07.04.2006 в 08:43)   письмо автору
 
 

вот код обработчика

<?
$comments 
str_replace("[/B]","</b>",$comments);
$comments str_replace("","<i>",$comments);
$comments str_replace("
"
,"</i>",$comments);
$comments str_replace("[U]","<u>",$comments);
$comments str_replace("[/U]","</u>",$comments);
$comments str_replace("","<s>",$comments);
$comments str_replace("
","</s>",$comments);
$comments str_replace("
","<center>",$comments);
$comments str_replace("
"
,"</center>",$comments);
$comments str_replace("[COLOR=red]","<font color=red>",$comments);
$comments str_replace("[COLOR=blue]","<font color=blue>",$comments);
$comments str_replace("[COLOR=purple]","<font color=purple>",$comments);
$comments str_replace("[COLOR=orange]","<font color=orange>",$comments);
$comments str_replace("[COLOR=yellow]","<font color=yellow>",$comments);
$comments str_replace("[COLOR=gray]","<font color=gray>",$comments);
$comments str_replace("[COLOR=green]","<font color=green>",$comments);
$comments str_replace("[/COLOR]","</font>",$comments);
$comments str_replace("[QUOTE]","<blockquote style='border: 1px solid #4D6D91; background: #F4F4F4;'>",$comments);
$comments str_replace("[/QUOTE]","</blockquote>",$comments);
$comments wordwrap($comments30" "1); // Большие слова разделяем пробелом!
$comments=str_replace("\r\n","<br>",$comments); 
$comments=str_replace("\n","<br>",$comments);
?>

в него передаётся переменная $commets = "jhfghfuf";
НУ и возвращается в таком же виде, а нужно чтоб возвращалось <b></b>

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования