Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ссылки из регов + BB теги = пробка


Автор: InfMag 14.4.2005, 14:07
Люди у меня ссылки типа http://server.com заменяются на <a href="http://server.com" target="_blank">http://server.com</a>, но дело в том, что я еще использую свой тег, а именно [IMG], но в IMG указывается ссылка, а рег, который обрабатывает ссылки заменяет ссылку в самом IMG и создает пробку.
Как мне выйти из положения?
Код

$string = preg_replace("#(http|https|ftp)://([^(\s|\<\b\r\>)]*)#", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $string);
$string = preg_replace("#(\w*)\@(\w*)\.(\w*)#", "<a href=\"mailto:\\0\" target=\"_blank\">\\0</a>", $string);

Код

$string = preg_replace("%\[imgl=+([^\]]*?)\]%si", "<img src='\\1' align=left style='margin:2; padding:2'>", $string); // С левой стороны [ImgL]
$string = preg_replace("%\[imgr=+([^\]]*?)\]%si", "<img src='\\1' align=right style='margin:2; padding:2'>", $string); // С правой стороны [ImgR]

smile

Автор: Mal Hack 14.4.2005, 14:20
Все в один рэг писать.

Автор: InfMag 14.4.2005, 19:56
Mal Hack
Это как? Я тебя не понимаю...
А можно в реге проверить, мол чтобы стоп, если первый символ равняется символу: = ? smile

Автор: Mal Hack 14.4.2005, 20:50
Цитата(InfMag @ 14.4.2005, 20:56)
Это как? Я тебя не понимаю...

Один раз делаешь рэгом проход по тексту.
Вот тут мне объясняли: http://forum.vingrad.ru/index.php?showtopic=45358&view=getnewpost

Цитата(InfMag @ 14.4.2005, 20:56)
А можно в реге проверить, мол чтобы стоп, если первый символ равняется символу: = ? smile

да.

Автор: InfMag 14.4.2005, 21:07
Цитата
да.

Как? smile

Автор: Mal Hack 14.4.2005, 21:30
Цитата(InfMag @ 14.4.2005, 22:07)
Как? smile

http://ru2.php.net/manual/en/reference.pcre.pattern.syntax.php
Т.е. ?(expr)(true)|(false) вроде так

Автор: InfMag 14.4.2005, 21:38
Mal Hack
Странно, не понял...
Можешь это к началу рега приписать?
$string = preg_replace("#(http|https|ftp)://([^(\s|\<\b\r\>)]*)#", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $string);

Автор: Mal Hack 14.4.2005, 21:50
InfMag
1. большой рэг.
2. Значение не сразу заменяешь а через функцию.
3. Внутри функции уже распознаешь что к тебе пришло ссылка или картинка. Почитай ту тему внимательно

Автор: InfMag 14.4.2005, 22:42
Mal Hack
Извини, но я ничего от туда для себя не могу усвоить...
Мне просто нужно к началу рега эту проверку с символом равно приколбасить.
Это превращается в геморой. Я запарился решать вроде такую простую проблему уже 4 часа.
Добавлено @ 22:45
Вот что допустим делает этот форум, именно IPB.
Если я только открыто пишу URL он его нормана делает, а если между какими-нить символами, то он внимания не обращает.

Автор: Mal Hack 14.4.2005, 22:46
Цитата(InfMag @ 14.4.2005, 23:42)
Я запарился решать вроде такую простую проблему уже 4 часа.

Всего-то 4 часа?
Я 2 суток решал... Потом еще 4 это оптимизировал.

Автор: InfMag 14.4.2005, 23:15
Mal Hack
Значит мне нада ждать. smile
ИМХО: smile
Засада. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)