Я написал функцию Quote для своего личного форума на веб-сайте, написанном на PHP.
Теги сообщения в кавычках выглядят как [quote=username]message[/quote]
, поэтому я написал эту функцию:
$str=preg_replace('#\[quote=(.*?)\](.*?)\[/quote\]#is', '<div class="messageQuoted"><i><a href="index.php?explore=userview&userv=$1">$1</a> wrote :</i>$2</div>', $str);
Это работает, если цитата одна, но затем пользователь цитирует цитату, это не работает. Поэтому мне нужно что-то вроде рекурсивной цитаты для применения этого поведения.
Я пытался искать по ТАКому количеству тем, но я не совсем понимаю, как это может работать.
Буду признателен за любые предложения / советы по выполнению такого рода операций! Дайте мне знать, и спасибо!
РЕДАКТИРОВАТЬ
В конце концов, это мое собственное решение:
if(preg_match_all('#\[quote=(.*?)\](.*?)#is', $str, $matches)==preg_match_all('#\[/quote\]#is', $str, $matches)) {
array_push($format_search, '#\[quote=(.*?)\](.*?)#is');
array_push($format_search, '#\[/quote\]#is');
array_push($format_replace, '<div class="messageQuoted"><a class="lblackb" href="index.php?explore=userview&userv=$1">$1</a> wrote :<br />$2');
array_push($format_replace, '</div>');
}
$str=preg_replace($format_search, $format_replace, $str);
он заменяет только если число совпадений правильное. Так что следует (верно?) Предотвращать html-атаки или другие злонамеренные атаки. Что ты думаешь?