[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автоссылки, проблема с выводом укороченной ссылки.
LRCenter
Есть скрипт для авто выделения ссылок в тексте:

echo preg_replace("'[\w\+]+://[A-я0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", '<a href="$0" target="_blank">$0</a>', $text);


Все работает замечательно, но хотелось бы чтобы он сокращал видимую часть ссылки. Например "http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" до -->> "http://ru.wikipedia.org/wiki/%D0%9C.."

Проблема в том что функция внутри регулярки не работает:

echo preg_replace("'[\w\+]+://[A-я0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", '<a href="$0" target="_blank">'.substr($0, 1, 40).'</a>', $text);


Идеи?



Спустя 59 минут, 33 секунды (23.10.2011 - 11:58) Shadez написал(а):
preg_replace_callback()

<?php
$text = 'http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5';
echo preg_replace_callback("'[\w\+]+://[A-я0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si", 'my_replace', $text);

function my_replace($m)
{
return '<a href="' . $m[0] . '" target="_blank">' . substr($m[0], 0, 40) . '...</a>';
}
?>

Спустя 27 минут, 4 секунды (23.10.2011 - 12:25) LRCenter написал(а):
Shadez
Интересная функция, неплохое решение, спасибо!


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

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