|
|
|
|
|
для: Borbosso
(12.04.2006 в 19:30)
| | str_replace быстрее работает - соответственно меньше грузит сервер.
Через preg_replace оба тега (открывающий и закрывающий) меняются одним вызовом.
Соответственно - проще писать.
С другой стороны, str_replace позволяют применять массивы в качестве параметров поиска и замены, так что все простые замены можно выполнить одним вызовом.
Опять же, не смотря на весь "интеллект" регулярных выражений, этот механизм в принципе не умеет работать со структурированными данными, так что ожидать, что он проверит и корректно сформирует вложенную теговую структуру - не стоит.
С другой стороны через preg можно довольно легко и быстро написать замену с параметрами, вроде COLOR=? в этом примере. Через str_replace придется расписывать каждый случай.
Конструкции с preg обычно выглядят изящнее, компактнее, лаконичнее. И позволяют быстрее добиться желаемых результатов.
С другой стороны с ними надо быть крайне осторожным, когда работаешь с добавляемым html-контентом. Их силой можно увлечься так, что это выйдет боком.
За примером далеко ходить не надо. Форум phpbb не так давно имел серьёзную уязвимость (highlight-дыра) обусловленную применением preg для замены контекста поиска сообщений на ссылки. Причем заткнули её авторы явно не намертво, т.к. пошли по пути усложнения паттерна.
А выбор остается за разработчиком. | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: Oligarx
(07.04.2006 в 08:43)
| | =) | |
|
|
|
|
|
|
|
для: Oligarx
(07.04.2006 в 08:43)
| | а где начало тэга b?
$comments = str_replace("[B]","<b>",$comments);
|
| |
|
|
|
|
|
|
| вот код обработчика
<?
$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($comments, 30, " ", 1); // Большие слова разделяем пробелом!
$comments=str_replace("\r\n","<br>",$comments);
$comments=str_replace("\n","<br>",$comments);
?>
|
в него передаётся переменная $commets = "jhfghfuf";
НУ и возвращается в таком же виде, а нужно чтоб возвращалось <b></b> | |
|
|
|
|