|
|
|
| Добрый день, у меня такая проблема. Вот код преобразования 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. | |
|
|
|
|
|
|
|
для: 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); | |
|
|
|
|
|
|
|
для: 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" | |
|
|
|
|
|
|
|
для: LordFreeman
(26.05.2007 в 20:32)
| | Странно.. у меня работает как положено. Вы полностью заменили строку?
> линк уже выглядит так: http://freeman.telenet.ru/main/"http://www.ea.com"
который? | |
|
|
|
|
|
|
|
для: 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 строку заменил полностью. | |
|
|
|