[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите дописать функцию с регулярным выражением
ola_sh
Помогите дописать функцию с регулярным выражением для определения ссылок и их замены таким образом чтобы анкором был домен, например функция ниже делает из
 http://youtube.com/video123123 <a href='http://youtube.com/video123123'>http://youtube.com/video123123</a>

а мне нужно получить:
<a href='http://youtube.com/video123123'>youtube.com</a>

preg_replace_callback(
'{
(?:
(\w+://) # протокол с двумя слэшами
| # - или -
www\. # просто начинается на www
)
[\w-]+(\.[\w-]+)* # имя хоста
\S* # URI (но БЕЗ кавычек)
(?: # последний символ должен быть...
(?<! [[:punct:]] ) # НЕ пунктуацией
| (?<= [-/&+*] ) # но допустимо окончание на -/&+*
)
}xis'
,
create_function
(
'$match',
// Если нет протокола, добавляем его в начало строки.
'$href = !empty($match[1])? $match[0] : "http://".$match[0];
// Формируем ссылку.
return
\'<a href="\'.$href.\'" target="_blank">\'.$match[0].\'</a>\';'
),
$text
)



Заранее спасибо

_____________
С Уважением ola_sh
Visman
Попробуй так
preg_replace_callback(
'{
(?:
(\w+://) # протокол с двумя слэшами
| # - или -
www\. # просто начинается на www
)
[\w-]+(\.[\w-]+)* # имя хоста
\S* # URI (но БЕЗ кавычек)
(?: # последний символ должен быть...
(?<! [[:punct:]] ) # НЕ пунктуацией
| (?<= [-/&+*] ) # но допустимо окончание на -/&+*
)
}xis'
,
create_function
(
'$match',
// Если нет протокола, добавляем его в начало строки.
'$href = !empty($match[1])? $match[0] : "http://".$match[0];
$str = parse_url($href);
// Формируем ссылку.
return
\'<a href="\'.$href.\'" target="_blank">\'.$str[\'host\'].\'</a>\';'
),
$text
)
Быстрый ответ:

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