Активизация кода на странице
Активизация ссылок
Следующий пример делает все ссылки активными, т.е. теперь на них можно нажать.
// "Активизация" HTML-ссылок.
$text = 'Ссылка: (http://kdg.htmlweb.ru), www.vsetaksi.ru?"a"=b, http://sborki.ru.';
echo hrefActivate($text);
// Функция обратного вызова для preg_replace_callback().
function hrefCallback($p) {
// Преобразуем спецсимволы в HTML-представление.
$name = htmlspecialchars($p[0]);
// Если нет протокола, добавляем его в начало строки.
$href = !empty($p[1])? $name : "http://$name";
// Формируем ссылку.
return "<a href=\"$href\">$name</a>";
}
// Заменяет ссылки на их HTML-эквиваленты ("подчеркивает ссылки").
function hrefActivate($text) {
return preg_replace_callback(
'{
(?:
(\w+://) // протокол с двумя слэшами
| // - или -
www\. // просто начинается на www
)
[\w-]+(\.[\w-]+)* // имя хоста
(?: : \d+)? // порт (не обязателен)
[^<>"\'()\[\]\s]* // URI (но БЕЗ кавычек и скобок)
(?: // последний символ должен быть...
(?<! [[:punct:]] ) // НЕ пунктуацией
| (?<= [-/&+*] ) // но допустимо окончание на -/&+*
)
}xis',
"hrefCallback",
$text
);
}
Активизация E-mail -ов
$text = "Привет от somebody@mail.ru, а также от other@mail.ru!";
$html = preg_replace(
'/(\S+)@([a-z0-9.]+)/is', // найти все E-mail
'<a href="mailto:$0">$0</a>', // заменить их по шаблону
$text // искать в $text
);
echo $html;
.
Прокомментировать/Отблагодарить