Forum Webscript.Ru
Программирование => PHP => Тема начата: koder от 23 Октября 2006, 02:19:12
-
Цель - выделить в тексте ссылки.
Тоесть из http://s.ru сделать http://s.ru
Но также нужно учесть что ссылока уже может быть выделеной, тогда повторное выделение очень не желательное!!!
Вот что написал: (точнее взял тут (http://xpoint.ru/know-how/PHP/GotovyieResheniya?10#ZamenaNekotoroyPodstrokiTol\'ko) - советую глянуть )
function addlinks($html)
{
$substring = \'http\\S+\';
$replacement = \'$2\';
$result = preg_replace("/((?:^|> )[^<]*)($substring)/si", \'$1\'.$replacement, $html);
return $result;
}
Функция в большенстве случает работает, но недавно заметил вот такую проблемы
Если строка такая
echo addlinks(" text text http://s.ru text
text");
то все выделяется правильно, а вот при таком варианте
echo addlinks("
text text http://s.ru text
text");
уже не работает! Что не так в рег. выражении понять не могу
-
function addlinks($html)
{
$html = eregi_replace("http://(([A-Za-z0-9._\\-])*)", "\\\\0", $html);
return $html;
}
как-то так...
-
И тогда если сделать
echo addlinks(" text text http://s.ru text
text");
то получится не совсем то что нужно!
-
хм. неужели никто такого не писал? полезная вещь же..
-
Во-первых, посмотрите на исходные условия - там об этом ничего не было.
Во-вторых, самостоятельно прикрутить strip_tags() в нужном месте религия запрещает?
-
Во-первых, посмотрите на исходные условия - там об этом ничего не было.
разве?
Но также нужно учесть что ссылока уже может быть выделеной, тогда повторное выделение очень не желательное!!!
Во-вторых, самостоятельно прикрутить strip_tags() в нужном месте религия запрещает?
тоесть в нужном месте? Смотри, у меня есть большой кусок текста в HTML формате. Там есть ссылки уже выделеные в а есть не выделеные. strip_tags() ко всему - не вариант. А вот как это применить к нужному куску?
-
Согласен, насчет условий промахнулся! :)
Внимательно следим за руками:
"http://(([A-Za-z0-9._\\-])*)"
меняем на
" http://(([A-Za-z0-9._\\-])*) "
т.е. обрамляем выражение пробелами, и - о, чудо! - все работает!
-
хм. а это и правда хороший вариант!
-
Да, совсем забыл: еще нужно в выражение добавить слэш, амперсанд, диез, знак процента и вопросительный знак.