PHP

Замена по регулярному выражению

1

Замена символов

Замена повторяющихся пробелов на один

$text = 'Многие известные        личности и по сей день';
echo preg_replace("/[ ]+/", ' ', $text);

Результат:

Многие известные личности и по сей день

Замена точек на мнемонику многоточия

$text = 'Многие известные личности и по сей день...';
echo preg_replace('/\.{3}/', '…', $text);

Результат:

Многие известные личности и по сей день…

Замена повторяющихся знаков препинания

$text = 'Многие известные.... личности и по сей день,,,, Современные??? технологии достигли!!!';
echo preg_replace("/(\.|,|!|\?)+/", '\\1', $text);

Результат:

Многие известные. личности и по сей день, Современные? технологии достигли!
2

Замена на HTML теги

Замена url на ссылки

В анкоре полученных ссылок не выводятся http и параметры GET.

$text = 'Text http://webmaster.yandex.ru/?hash=234&time=1 text http://www.google.ru text.';
echo preg_replace(
    '/(http:\/\/|https:\/\/)?(www)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w\.-\?\%\&]*)?/i', 
    '<a href="\1\2\3.\4$5">\\2\\3.\\4</a>', 
    $text
);

Результат:

Text <a href="http://webmaster.yandex.ru/?hash=234&time=1">webmaster.yandex.ru</a> text 
<a href="http://www.google.ru">www.google.ru</a> text.

Замена e-mail на ссылку mailto:

$text = 'text admin@Mail.ru text text text admin@ya.ru';
echo preg_replace(
    '/([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+([a-z]{2,6})/i', 
    '<a href="mailto:\\0">\\0</a>', 
    $text
);

Результат:

text <a href="mailto:admin@Mail.ru">admin@Mail.ru</a> text text text <a href="mailto:admin@ya.ru">admin@ya.ru</a>
06 апреля 2018