Глава 28: завершение черновика

This commit is contained in:
Igor Simdyanov
2022-05-18 20:23:05 +03:00
parent 917775a464
commit feac484d10
3 changed files with 51 additions and 0 deletions

14
regexp/email.php Normal file
View File

@ -0,0 +1,14 @@
<?php
$text = 'Адреса: user-first@mail.ru, second.user@mail.ru.';
$html = preg_replace(
'{
[-\w.]+ # имя ящика
@
[-\w]+(\.[-\w]+)* # имя хоста
}xs',
'<a href="mailto:$0">$0</a>',
$text
);
echo $html;

4
regexp/grep.php Normal file
View File

@ -0,0 +1,4 @@
<?php
foreach (preg_grep('/^ex\d/s', glob('*')) as $fn) {
echo "Файл примера: $fn<br />";
}

33
regexp/http.php Normal file
View File

@ -0,0 +1,33 @@
<?php
$text = 'Ссылка: (http://thematrix.com), www.ru?"a"=b, http://lozhki.net.';
echo hrefActivate($text);
// Заменяет ссылки их HTML-эквивалентами ("подчеркивает ссылки")
function hrefActivate($text)
{
return preg_replace_callback(
'{
(?:
(\w+://) # протокол с двумя слешами
| # - или -
www\. # просто начинается на www
)
[-\w]+(\.[-\w]+)* # имя хоста
(?: : \d+)? # порт (не обязателен)
[^<>"\'()\[\]\s]* # URI (но БЕЗ кавычек и скобок)
(?: # последний символ должен быть...
(?<! [[:punct:]] ) # НЕ пунктуационным
| (?<= [-/&+*] ) # но допустимо окончание на -/&+*
)
}xis',
function ($p) {
// Преобразуем спецсимволы в HTML-представление
$name = htmlspecialchars($p[0]);
// Если нет протокола, добавляем его в начало строки
$href = !empty($p[1])? $name : "http://$name";
// Формируем ссылку
return "<a href=\"$href\">$name</a>";
},
$text
);
}