[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск ссылки в тексте
Страницы: 1, 2
dron4ik
Я новичок, дошел до регулярных выражений, в частности поиск и замена в тексте!
Суть такая, есть Пост текст и пытаюсь сделать все внутреннее ссылки обрамлены тегом А
$text = $_POST['text'];
$text =preg_replace("/(http:\/\/[^\s]+)/", "<a href='$1' target='_blank'>$1</a>",$text );
Все до чего я дошел)))
Было бы интересно чтоб не только в ссылку, а если ссылка на картинку, то вместо тега А бил ИМГ, Может ктото знает как такое сделать? Мне чисто для обучения))) В гугле толкового не нашел, но вполне возможно что не то искал)))

_____________
Ex3m.com.ua — Активный образ жизни
killer8080
Цитата (dron4ik @ 10.01.2012 - 22:22)
Было бы интересно чтоб не только в ссылку, а если ссылка на картинку, то вместо тега А бил ИМ

А как ты узнаешь на что ссылается ссылка?
dron4ik
По окончанию... если ссылка на картинку то по любому будет окончание .jpg .png .JPG .jpeg ну как там, и тому подобное))) Но Как такую проверку организовать, или отдельно нужно писать проверку? а ссылки на страницы сайтов, или .php .html ну или вообще никакой)

_____________
Ex3m.com.ua — Активный образ жизни
killer8080
Цитата (dron4ik @ 10.01.2012 - 22:30)
По окончанию... если ссылка на картинку то по любому будет окончание .jpg .png .JPG .jpeg ну как там,

Переделай регулярку чтоб ловила расширения файлов.
dron4ik
Текст нужно будет два раза пропустить через preg_replace?
или возможно вписать условие какой тег подставлять?

_____________
Ex3m.com.ua — Активный образ жизни
killer8080
Цитата (dron4ik @ 10.01.2012 - 22:36)
Текст нужно будет два раза пропустить через preg_replace?
или возможно вписать условие какой тег подставлять?

можно использовать preg_replace_callback
killer8080
dron4ik
держи
$text = 'text http://static.php.net/www.php.net/images/php_snow_2008.gif  
alll
http://www.php.net/manual/ru/function.preg-replace-callback.php
text
'
;
$text = preg_replace_callback(
'#https?://[a-z\d\._/~%-]+(?:\.(jpe?g|png|gif))?(?:\s|$)#isU',
create_function('$m', '
if(!empty($m[1]))
return
\'<img src="\'.$m[0].\'" alt="pic" />\';
else
return
\'<a href="\'.$m[0].\'">\'.$m[0].\'</a>\';
'
),
$text
);
echo '<pre>'.htmlspecialchars($text).'</pre>';
echo $text;
dron4ik
Я Пока гуглил за меня все сделали))) Спасибо))) Проверил) Простые ссылки работают на ура) но вод к примеру http://vkontakte.ru/feed?section=comments уже не срабатывает, из-за окончания))) Но это я уже сам добью) Спасибо) biggrin.gif

_____________
Ex3m.com.ua — Активный образ жизни
killer8080
Цитата (dron4ik @ 10.01.2012 - 23:37)
уже не срабатывает, из-за окончания))

Нет, я там в регулярке упустил знак "=", "?" и "&". Исправь
'#https?://[a-z\d\._/~%\?&=-]+(?:\.(jpe?g|png|gif))?(?:\s|$)#isU'
dron4ik
Я в самый конец добавил /? потому что ссылки кончающийся на слеш он не видел! Это правильно?)

_____________
Ex3m.com.ua — Активный образ жизни
Winston
Цитата (dron4ik @ 11.01.2012 - 00:55)
Это правильно?)

Угу.
dron4ik
Спасибо за помощь))) Теперь буду раскуривать как это сделано, и как можно улучшить и модернизировать)))

_____________
Ex3m.com.ua — Активный образ жизни
Winston
Цитата (dron4ik @ 11.01.2012 - 01:53)
как можно улучшить и модернизировать

Можно сократить на несколько символов :)
'#https?://[\w./~%?&=-]+(?:\.(jpe?g|png|gif))?(?:\s|$)#isU'
killer8080
Цитата (dron4ik @ 11.01.2012 - 00:55)
Я в самый конец добавил /? потому что ссылки кончающийся на слеш он не видел! Это правильно?)

Не может быть. Покажи пример ссылки.
dron4ik
Нынче все нормально! Но вод ссылка "http://vkontakte.ru/")

_____________
Ex3m.com.ua — Активный образ жизни
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.