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

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

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

 

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

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

тема: Проблема с \n
 
 автор: <?Mike?>   (07.05.2008 в 02:52)   письмо автору
 
 

Уже полдня не могу решить проблему с цитатами в комментариях.

<?php
$text
="Бла бла бла…
User писал:
 > цитата
 > и ещё
 > и ещё…"
;
print 
'<pre>'.preg_replace("#\n > (.+)\n#isU","<b> > \\1</b>\n","\n".$text."\n").'</pre>';
?>


Смысл: если строка комментария начинается с “ > “ – то это – цитата, а цитату нужно выделить.
Но регулярное выражение выделяет каждую вторую строку... В итоге получается:
Бла бла бла…
User писал:
> цитата
> и ещё
> и ещё...

Смотрю в исходный код страницы, а там:

Бла бла бла…
User писал:
<pre>
<b> > цитата
</b>
> и ещё
<b> > и ещё...</b>
</pre>

Подозрение падает на то, что </b> после слова “цитата” переносится на другую строку.
Как можно сделать так, чтобы </b> не переносился?

   
 
 автор: AcidTrash   (07.05.2008 в 09:45)   письмо автору
 
   для: <?Mike?>   (07.05.2008 в 02:52)
 

Уберите модификатор U.

   
 
 автор: sil   (07.05.2008 в 11:06)   письмо автору
 
   для: AcidTrash   (07.05.2008 в 09:45)
 

а проще как-то использовать /m

хотя-бы так:
<?php 
$text
="Бла бла бла… 
User писал: 
 > цитата 
 > и ещё 
 > и ещё…"

print 
'<pre>'.preg_replace("#((?:^\s*>.*$\r?\n)+)#m""<b>\\1</b>"$text."\n").'</pre>'
?>
но можно как-то ещё проще

   
Rambler's Top100
вверх

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