mirror of
https://github.com/igorsimdyanov/php8.git
synced 2025-08-06 11:10:42 +00:00
Глава 28: завершение черновика
This commit is contained in:
14
regexp/email.php
Normal file
14
regexp/email.php
Normal 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
4
regexp/grep.php
Normal file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
foreach (preg_grep('/^ex\d/s', glob('*')) as $fn) {
|
||||
echo "Файл примера: $fn<br />";
|
||||
}
|
33
regexp/http.php
Normal file
33
regexp/http.php
Normal 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
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user