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

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

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

 

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

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

тема: Разбор вложенных bb кодов
 
 автор: Axxil   (05.08.2006 в 19:18)   письмо автору
 
 

Где-то по-моему это уже обсуждалось...
Есть конструкция [cite author="misha"]la-la-la text [cite author="kolya"][/cite]la-la-la[/cite]
Причём уровень вложенности [cite] может быть любой.
Как можно в таком случае вытащить все цитаты, а лучше заменить на стандартное оформление?

   
 
 автор: cheops   (05.08.2006 в 22:56)   письмо автору
 
   для: Axxil   (05.08.2006 в 19:18)
 

Под стандартным оформлением что имеется ввиду?

   
 
 автор: Axxil   (06.08.2006 в 15:49)   письмо автору
 
   для: cheops   (05.08.2006 в 22:56)
 

ну например для одиночных тегов такая штука:

<?
$replace 
'<div class="cite_message"><span class="cite_author">\\1 писал(а)</span><div class="cite_body">\\2</div></div>';
$message preg_replace('|\[cite author="([^"]*)"\]([^\[]*)\[/cite\]|is',$replace,$message);
?>

$replace - это стандартое оформление

   
 
 автор: Axxil   (07.08.2006 в 01:00)   письмо автору
 
   для: Axxil   (06.08.2006 в 15:49)
 

Так как же всё же?
Подозреваю что нужно использовать preg_replace_callback

   
 
 автор: Axxil   (09.08.2006 в 11:46)   письмо автору
 
   для: Axxil   (07.08.2006 в 01:00)
 

Подскажите хотя бы направление, алгоритм что ли...

   
 
 автор: Axxil   (09.08.2006 в 15:43)   письмо автору
 
   для: Axxil   (09.08.2006 в 11:46)
 

Пришлось самому делать:

<?
  preg_match_all
('|\[tag\]|is',$str,$out);
  
$pattern '|\[tag\]([^\[]*)\[/tag\]|is';
  for(
$i=0;$i<sizeof($out[0]);$i++)
    
$str preg_replace($pattern,'<div>\\1</div>',$str); 
  echo 
$str;  
?>

   
 
 автор: ec_stasis   (12.08.2006 в 01:30)   письмо автору
 
   для: Axxil   (09.08.2006 в 15:43)
 

Ну, сделал?

   
 
 автор: Axxil   (12.08.2006 в 10:19)   письмо автору
 
   для: ec_stasis   (12.08.2006 в 01:30)
 

Не понял, а мой предыдущий пост нормально видно?

   
Rambler's Top100
вверх

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