|
|
|
| Здрасте. Пытаюсь сделать замену BBcode гиперссылки на гет гиперссылки. дело в том что код может быть таким url=www.site.ru]текст[/url], а может быть таким url]www.site.ru[/url]. Для замены пользуюст такими алгоритмами:
Для url=www.site.ru]текст[/url]:
while (eregi("(.+)?(\[url=)(http://)?([^[:space:]]+)([[:alnum:]\.,-_?/&=])(\])(.+)(\[/url\])(.+)?", $text)) {
$pattern="(.+)?(\[url=)(http://)?([^[:space:]]+)([[:alnum:]\.,-_?/&=])(\])(.+)(\[/url\])(.+)?";
$replace="\\1<a href=\"http://\\4\\5\">\\7</a>\\9";
$text=eregi_replace($pattern, $replace, $text);
}
|
Для url]www.site.ru[/url]
while (eregi("(.+)?(\[url\])(http://)?([^[:space:]]+)([[:alnum:]\.,-_?/&=])(\[/url\])(.+)?", $text)) {
$pattern="(.+)?(\[url\])(http://)?([^[:space:]]+)([[:alnum:]\.,-_?/&=])(\[/url\])(.+)?";
$replace="\\1<a href=\"http://\\4\\5\">\\4\\5</a>\\7";
$text=eregi_replace($pattern, $replace, $text);
}
|
Так вот все работает, за исключением тех случаев, когда в сообщение есть сначала первый вид ссылки а потом второй:
url=www.site.ru]текст[/url] еще некоторый текст url]www.site.ru[/url].
Дело в том что определяется не 2 контейнера, а один первый открывающий и 2-й закрывающий а между нами содержимое
текст[/url] еще некоторый текст url]www.site.ru
|
Как это починить???? | |
|
|
|
|
|
|
|
для: parczynski
(20.07.2007 в 18:17)
| | 1) Забудьте про ereg и подобную чушь! Эти регулярки разработаны производителями пхп и работают ОЧЕНЬ МЕДЛЕННО! Используйте Perl-library, то есть, аналоги preg.
2) достаточно одной регулярки для замены надписи типа [url=site]текст[/url]
что-то типа:
preg_replace("/\[url=([a-z0-9./:]+)\](.*?)\[url\]/","<a href=$1>$2</a>");
3) Возможно, я неправильно понял условие. Дайте примеры строк, которые могут быть на входе и что нужно получить на выходе. | |
|
|
|
|
|
|
|
для: parczynski
(20.07.2007 в 18:17)
| | Пример такой:
ввожу строку
[url=www.site.ru]текст[/url] Здесь некоторый текст [url]www.site.ru[/url]
|
на выходе должно быть
<a href=www.site.ru>текст</a>Здесь некоторый текст<a href=www.site.ru>www.site.ru</a>
|
Вместо этого я получаю:
<a href="http://www.site.ru]текст[/url"> Здесь некоторый текст [url]www.site.ru</a>
|
| |
|
|
|
|
|
|
|
для: parczynski
(20.07.2007 в 18:42)
| | Тогда посмотри на мой предыдущий пост. | |
|
|
|