|
|
|
| Подскажите пожалуйста регулярное выражение чтобы можно было преобразовать ссылку типа
чтобы эти ссылки преобразовались в <a href ..>..</a>
просто не получается совместить одно с другим
или первое регулярное выражение мешает второму или наоборот | |
|
|
|
|
|
|
|
для: Visavi
(06.04.2008 в 23:33)
| | Запихни всё в один паттерн. А в качестве обработчика поставь какую-то функцию. | |
|
|
|
|
|
|
|
для: Atheist
(07.04.2008 в 00:04)
| | блин неправильно написал
http://site.ru
и
[ url = http://site.ru ] название [ /url]
а то форум обработал теги
если бы я умел с регулярными выражениями обращаться я бы не писал тут | |
|
|
|
|
|
|
|
для: Visavi
(07.04.2008 в 00:16)
| | Как-то так
<?php
$text="http://site.ru text [url = http://site.ru/]название[/url]";
$e=preg_replace("#(http://(www.)?[0-9a-z\.-]+\.[a-z]{2,6}[0-9a-z/\?\._-]*)\s#i","<a href=\"$1\">$1</a> ",$text);
$e=preg_replace("#\[url = ([^\]]+)\](.*?)\[/url\]#","<a href=\"$1\">$2</a>",$e);
print $e;
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(07.04.2008 в 12:07)
| | $text = 'http://example.com/path-ссылка http://example.com/';
Результат кода Faraon'а:
http://example.com/path-ссылка http://example.com/
Ничего не изменилось. Пробельный символ в конце - потрясяющее условие. | |
|
|
|
|
|
|
|
для: Atheist
(07.04.2008 в 15:25)
| | Atheist если вы можете подскажите как сделать
а я то думал почему у меня то работает то нет, оказывается \s означает пробельный символ | |
|
|
|
|
|
|
|
для: Visavi
(07.04.2008 в 17:12)
| | Вот подправил
<?php
$text="http://site.ru text [url = http://site.ru/]название[/url]";
print preg_replace("#(\[url = ([^\]]+)\](.*?)\[/url\])|(http://(www.)?[0-9a-z\.-]+\.[a-z]{2,6}[0-9a-z/\?=&\._-]*)#","<a href=\"$2\">$3</a><a href=\"$4\">$4</a>",$text);
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(07.04.2008 в 17:30)
| | > <a href=\"$2\">$3</a><a href=\"$4\">$4</a>
*Улюлюкает* | |
|
|
|
|
|
|
|
для: Faraon
(07.04.2008 в 17:30)
| | если переставить ссылки, то код будет выглядеть примерно так
<a href="http://site.ru/">название</a><a href=""></a> <a href=""></a><a href="http://site.ru">http://site.ru</a> | |
|
|
|
|
|
|
|
для: Visavi
(07.04.2008 в 20:10)
| | Короче, вот так можно:
<?php
function _anchor($m)
{
if( !isset($m[3]) )
{
return '<a href="' . $m[1] . '">' . $m[2] . '</a>';
}
else
{
return '<a href="' . $m[3] . '">' . $m[3] . '</a>';
}
}
$s = 'http://site.ru text название';
$s = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://\\S+)~', '_anchor', $s);
echo $s;
|
Обрати внимание на "http://\\S+" - заменишь на свой паттерн для замены URL. Этот в качестве заглушки стоит. | |
|
|
|
|
|
|
|
для: Atheist
(07.04.2008 в 20:41)
| | спасибо все работает отлично сделал вот так
<?php
$message = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[a-z]{2,6}[0-9a-z/\?\.\~&_=/%-:#]*)~', '_anchor', $message);
|
| |
|
|
|