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

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Работа с BBCode
 
 автор: saider   (26.05.2010 в 01:01)   письмо автору
 
 

народ, нкжна помощ, у меня такая вот проблема с цитатой, как я только вставляю BBCode
[quote=username]text[/quote] все работатет, но если только я вставляю цитату в цитату, [quote=username][quote=username]text[/quote] text[/quote] то первая цитата обрабатывается а вторая нет, в чем проблема?
Данные цитаты обрабатываются PHPкодом

$msg_users = preg_replace("/\[quote=(.+?)\](.+?)\[\/quote\]/", "<div>Цитата<strong> \\1</strong>:</div><div>\\2</div>", $msg_users);

  Ответить  
 
 автор: Gubichev   (26.05.2010 в 01:21)   письмо автору
 
   для: saider   (26.05.2010 в 01:01)
 

После последнего найденного вхождения, регулярка продолжает работать дальше. Т.е. она находит [quote=username][quote=username]text[/quote] а дальше остаётся только text[/quote]

  Ответить  
 
 автор: SaIdEr   (26.05.2010 в 01:58)   письмо автору
 
   для: Gubichev   (26.05.2010 в 01:21)
 

а что для этого нужно сделать чтобы такого небыло? просто уже бошка не работает с этим сайтом из - за этого и спрашиваю :)

  Ответить  
 
 автор: SaIdEr   (26.05.2010 в 13:49)   письмо автору
 
   для: SaIdEr   (26.05.2010 в 01:58)
 

все, я сам разобрался, вопрос отменяю. Там надо было сделать так:

$quote = preg_replace( "#\[quote=(.+?)\]#is", "<div class=\"quote_name\">Цитата <STRONG>\\1</STRONG></div><div class=\"quote_message\">", $msg_users );
$msg_users = preg_replace( "#(.+?)\[\/quote\]#is","\\1</div>", $quote);

Вот только если вдруг чтото я не верно сделал, то скажите что именно.

  Ответить  
 
 автор: Николай2357   (26.05.2010 в 17:53)   письмо автору
 
   для: SaIdEr   (26.05.2010 в 13:49)
 

<?php

$msg_users 
'[quote=<script>alert("Hello, XSS!\n"+document.cookie)</script>]';  
$quote preg_replace"#\[quote=(.+?)\]#is""<div class=\"quote_name\">Цитата <STRONG>\\1</STRONG></div><div class=\"quote_message\">"$msg_users ); 
$msg_users preg_replace"#(.+?)\[\/quote\]#is","\\1</div>"$quote);
echo 
$msg_users;

  Ответить  
Rambler's Top100
вверх

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