Intereting Posts
Подключение TimeOut к symfony.com через http proxy Regex – удалить теги 'a', где ссылка содержит определенные домены как создавать ежемесячные дни с PHP? найти значение в многомерном массиве и получить его путь в PHP htaccess rewriterule и после слэш хотите ввести что-то DotNetNuke, PHP, Имитация удаленной обратной передачи с использованием curl Несколько настроек IPN для Paypal Есть ли способ показать или бросить предупреждение PHP? PHP усекает данные MSSQL Blob (4096b), даже после установки значений INI. Я пропустил один? найти шаблон для URL-адреса без конечной косой черты Загрузите новую страницу напрямую, если пользователь уже зарегистрировался в facebook Как загладить первую букву в предложении в php Поиск существующей электронной почты и имени пользователя в базе данных Codeigniter присоединил таблицы, получившие неправильный вывод PHP добавляет 1 месяц к настоящему времени

Преобразование Eregi_replace в preg_replace в PHP

Мне нужна помощь в преобразовании eregi_replace в preg_replace (поскольку в PHP5 он обесценивается):

function makeClickableLinks($text) { $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1">\\1</a>', $text); $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2">\\2</a>', $text); $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[az]{2,3})', '<a href="mailto:\\1">\\1</a>', $text); return $text; } 

(Он превращает текстовые ссылки и электронные письма в гиперссылки, чтобы пользователь мог щелкнуть по ним)

Начните с просмотра различий между выражениями POSIX и PCRE в руководстве.

Если ваши выражения не являются сложными, обычно это означает, что вы можете уйти, просто наложив разделители вокруг вашего параметра $pattern и переключитесь на использование семейства функций preg . В вашем случае вы сделаете следующее:

  function makeClickableLinks($text) { $text = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '<a href="\\1">\\1</a>', $text); $text = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<a href="http://\\2">\\2</a>', $text); $text = preg_replace('/([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[az]{2,3})/i', '<a href="mailto:\\1">\\1</a>', $text); return $text; } 

Обратите внимание на символы / вокруг ваших шаблонов и флаг i после разделителей. Я тестировал это быстро, и он работал для базового URL-адреса. Вероятно, вы захотите проверить его более тщательно.