|
|
|
| есть текст
"[quote='Арт']блаблабла[quote='Пола']трутрутру[/quote]бумбум[/quote]кукареку"
надо превратить в
"[quote]<b>Арт написал:</b>\nблаблабла[quote]<b>Пола написал:</b>\nтрутрутру[/quote]бумбум[/quote]кукареку"
т.е. заменить [quote='какой-то_текст'] на [quote]<b>какой-то_текст написал:</b>\n | |
|
|
|
|
|
|
|
для: Art
(23.09.2005 в 11:22)
| | Чего-то не могу сообразить как обойти такой казус, как обработка вложенных тэгов - если воспользуетесь моим решением, придётся вычислять число тэгов [quote=] в тексте и выполнять столько же раз функцию preg_replace следующего содержания
<?php
$text = "[quote='Арт']блаблабла[quote='Пола']трутрутру[/quote]бумбум[/quote]кукареку";
$pattern = "|\[quote='([^']+)'\](.+)\[/quote\]|i";
$replacement = "[quote]<b>\$1 написал:</b>\n\$2[/quote]";
$text = preg_replace($pattern, $replacement, $text);
$text = preg_replace($pattern, $replacement, $text);
echo $text;
?>
|
Здесь двойное вложение - поэтому и функция выполняется два раза... | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 14:38)
| | Спасибо, но в том то и дело, что число тегов заранее не известно, т.е. вложенность их произвольная. | |
|
|
|
|
|
|
|
для: Art
(23.09.2005 в 15:29)
| | А это какая система (форум, CMS)? Много тэгов в тексте? Дело в том, что можно досчитать число вхождений фрагмента [quote=' при помощи функции substr_count()
<?php
$text = "[quote='Арт']блаблабла[quote='Пола']трутрутру[/quote]бумбум[/quote]кукареку";
// Подсчитываем число тэгов в строке
$number = substr_count($text,"[quote='");
// Осуществляем замену
$pattern = "|\[quote='([^']+)'\](.+)\[/quote\]|i";
$replacement = "[quote]<b>\$1 написал:</b>\n\$2[/quote]";
for($i = 0; $i < $number; $i++) $text = preg_replace($pattern, $replacement, $text);
echo $text;
?>
|
Может и не самое изящное решение, зато работает... | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 15:40)
| | В принципе наверно пойдет, спасибо.
Это конвертация одного форума в другой. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 15:40)
| | Вылезла небольшая проблема, т.к. тип $text - blob, то если в тексте встречаются переводы строки, то замены не происходит. Что можно сделать? | |
|
|
|
|
|
|
|
для: Art
(23.09.2005 в 16:26)
| | В регулярное выражение следует добавить модификатор s
<?php
$text = "[quote='Арт']блаблабла[quote='Пола']трутрутру[/quote]бумбум[/quote]кукареку";
// Подсчитываем число тэгов в строке
$number = substr_count($text,"[quote='");
// Осуществляем замену
$pattern = "|\[quote='([^']+)'\](.+)\[/quote\]|is";
$replacement = "[quote]<b>\$1 написал:</b>\n\$2[/quote]";
for($i = 0; $i < $number; $i++) $text = preg_replace($pattern, $replacement, $text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 23:35)
| | Огромное спасибо!!! Все получилось! | |
|
|
|