Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.176.239] |
|
Сообщ.
#1
,
|
|
|
Есть функция:
function bbcodes($out) { $search[] = "#\[color=(.*?)](.*?)\[/color\]#si"; $replace[] = '<font color=$1>$2</font>'; $search[] = "#\[b\](.*?)\[/b\]#si"; $replace[] = '<b>$1</b>'; $search[] = "#\[i\](.*?)\[/i\]#si"; $replace[] = '<i>$1</i>'; $search[] = "#\[u\](.*?)\[/u\]#si"; $replace[] = '<u>$1</u>'; $search[] = "#\[img\](.*?)\[/img\]#si"; $replace[] = '<img src="$1" class=border_1m>'; $search[] = "#\[img right\](.*?)\[/img\]#si"; $replace[] = '<img src="$1" align=right class=border_1m>'; $search[] = "#\[url new_win\](.*?)\[/url\]#si"; $replace[] = '<a href="http://$1" target=_blank>$1</a>'; $search[] = "#\[url\](.*?)\[/url\]#si"; $replace[] = '<a href="http://$1">$1</a>'; $search[] = "#\[url=([a-z]+://)(\S*?) new_win\](.*?)\[/url\]#si"; $replace[] = '<a href="$1$2" target=_blank>$3</a>'; $search[] = "#\[url=([a-z]+://)(\S*?)\](.*?)\[/url\]#si"; $replace[] = '<a href="$1$2">$3</a>'; $search[] = "/\s(\w+:\/\/)(\S+)/"; $replace[] = ' <a href="$1$2" target=_blank>$1$2</a>'; return preg_replace($search, $replace, $out); } Обратите внимание на последние элементы массивов $search и $replace. Там происходит замена введенной ссылки на тег <a ...></a>. Так вот, в данном случае получается белеберда полная. Ведь получается, что ищутся все эти , , [url][/url], пр. и заменяются на HTML-тэги. А потом в конце бац (!) и всё это портится заменой "http://..." на "<a href=...>...</a>". Как-то вообщем нужно включить в рег. выр. проверка на отсутствие квадратных скобок... Как? |
Сообщ.
#2
,
|
|
|
вместо
$search[] = "/\s(\w+:\/\/)(\S+)/"; напиши $search[] = "/\s[^\"](http:\/\/)([\S\/.-_]+)[^\"]"; вроде должно помочь, я не проверял. |
Сообщ.
#3
,
|
|
|
Axis
Не, чего-то не то... Путаницы с заменами не происходит, но зато не заменяет ссылки без bb-тэгов. |
Сообщ.
#4
,
|
|
|
DMX
Проблема-то есть? Нужно, чтобы текст в BB-кодах(урлы) на ссылки(<a href...) не заменялся или что? Вообще функцию эту проверял в работе? bbcodes() Или только смотришь на нее,думаешь как она работает и делаешь выводы? |
Сообщ.
#5
,
|
|
|
Черт... Только что просёк, что трабла была в пробеле между "[img]" и "[/img]", потому то и выводилось не правильно все. А я думал, что эт регулярка (regex) неверно написана.
Вопрос решен. |