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

Форум PHP

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

 

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

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

тема: bb коды
 
 автор: LordFreeman   (26.05.2007 в 14:24)   письмо автору
 
 

Добрый день, у меня такая проблема. Вот код преобразования bb-кодов:

$pagetext = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$pagetext);
$pagetext = preg_replace("#\[COLOR[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/COLOR\]#isU",'<FONT color="\\1">\\2</FONT>',$pagetext);
$pagetext = preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",'<a href="\\1" target=_blank>\\2</a>',$pagetext);


но в данном случае, если в переменной $pagetext будет что то похожее на

[URL="http://www.ea.com"][COLOR=#0000ff]Electronic Arts[/COLOR][/URL]

то ссылка ведет на ту страницу на которой сейчас находимся.
Подскажите как это исправить please.

   
 
 автор: kasmanaft   (26.05.2007 в 17:26)   письмо автору
 
   для: LordFreeman   (26.05.2007 в 14:24)
 

Можно вот так сделать:
$pagetext = preg_replace("#\[url[\s]*=[\s]*([\"']?)([\S]+?)\\1?[\s]*\][\s]*([^\[]*)\[/url\]#is",'<a href="\\2" target=_blank>\\3</a>',$pagetext);

   
 
 автор: LordFreeman   (26.05.2007 в 20:32)   письмо автору
 
   для: kasmanaft   (26.05.2007 в 17:26)
 

у меня получается вот что: [URL="http://www.ea.com"]Electronic Arts[/URL] - в смысле он так ее и выводит(в смысле тег [color] проходит, а линк не пашет.

а когда внутри тега URL нету ничего постороннего, то он работает, но, если, я перед заменой прогоняю функцию $pagetext=htmlspecialchars($pagetext)
то линк уже выглядит так: http://freeman.telenet.ru/main/"http://www.ea.com"

   
 
 автор: kasmanaft   (26.05.2007 в 22:07)   письмо автору
 
   для: LordFreeman   (26.05.2007 в 20:32)
 

Странно.. у меня работает как положено. Вы полностью заменили строку?

> линк уже выглядит так: http://freeman.telenet.ru/main/"http://www.ea.com"
который?

   
 
 автор: LordFreeman   (27.05.2007 в 00:17)   письмо автору
 
   для: kasmanaft   (26.05.2007 в 22:07)
 

когда внутри тега с цитатой, присутствует еще тег с цветом шрифта, то обработчик тег шрифта обрабатывает, а тег URL остается. то есть на страницу выводится вот это: [URL="http://www.ea.com"]Electronic Arts[/URL] (надпись Electronic Arts становится синей, что означает что тег color прошел). Если тега с цветом нету, то линк нормально работает.

если перед заменой прогоняется htmlspecialchars, то ссылка ведет на страницу http://freeman.telenet.ru/main/"http://www.ea.com" (http://freeman.telenet.ru/main/ - адрес текущей странички)

PS строку заменил полностью.

   
Rambler's Top100
вверх

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