Замена URL, e-mail и текста на HTML-теги по регулярному выражению PHP.
В анкорах сформированных ссылок не будет http:// и GET параметров.
$text = '
http://webmaster.yandex.ru/?hash=234&time=1
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
);
<a href="http://webmaster.yandex.ru/?hash=234&time=1">webmaster.yandex.ru</a>
<a href="http://www.google.ru">www.google.ru</a>
$text = 'admin@Mail.ru 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
);
<a href="mailto:admin@Mail.ru">admin@Mail.ru</a> <a href="mailto:admin@ya.ru">admin@ya.ru</a>
$text = '#HTML #CSS #JQuery';
echo preg_replace(
'/\#(.*?)(\s|$)/',
'<a href="#$1">#$1</a>$2',
$text
);
<a href="#HTML">#HTML</a> <a href="#CSS">#CSS</a> <a href="#JQuery">#JQuery</a>
Замена специальных символов на теги, к примеру, как сделано в Whatsapp – сообщение *текст* отправится как текст. Также можно сделать в PHP:
$text = 'Быстрый выкуп *оригинальных катриджей* по лучшим *ценам*';
echo preg_replace(
'/\*(.*?)\*/',
'<b>$1</b>',
$text
);
Быстрый выкуп <b>оригинальных катриджей</b> по лучшим <b>ценам</b>
$text = 'Быстрый выкуп #оригинальных катриджей#';
echo preg_replace(
'/\#(.*?)\#/',
'<a href="http://example.com">$1</a>',
$text
);
Быстрый выкуп <a href="http://example.com">оригинальных катриджей</a>
Следующи пример заменяет <br>
на \n
между тегами <pre>
...</pre>
.
$html = '
<pre>Пример текста с <br> переносом</pre>
<br>
<pre>Еще один <br> пример</pre>
';
function replaceBrTag($matches) {
return str_replace('<br>', "\n", $matches[0]);
}
$html = preg_replace_callback('/<pre>(.*?)<\/pre>/s', 'replaceBrTag', $html);
echo $html;
Результат:
<pre>Пример текста с \n переносом</pre>
<br>
<pre>Еще один \n пример</pre>