ereg_replace to preg_replace
У меня есть это предупреждение, устарело: функция ereg_replace() устарела, кто-то, пожалуйста, помогите мне.
ereg_replace:
ereg_replace('([^(folder)])/images/flash', '"/folder/images/flash', $echotemp);
preg_replace:
2 ответа
Устаревший метод - это метод, который в будущем будет исключен из используемого вами языка. Если у вас нет контроля над языковыми спецификациями и дорожной картой, у вас не так много рычагов.
Вы все еще можете использовать метод, но он может исчезнуть в будущем обновлении, и обычно поддержка метода просто рекомендует перейти на новые рекомендуемые способы выполнения действий.
Я рекомендую использовать метод замены для ereg_replace.
От: ereg_replace
Замечания:
Начиная с PHP 5.3.0 расширение regex устарело в пользу расширения PCRE. Вызов этой функции выдаст уведомление E_DEPRECATED. См. Список различий для получения справки по конвертации в PCRE.
,
Совет
preg_replace(), который использует Perl-совместимый синтаксис регулярных выражений, часто является более быстрой альтернативой ereg_replace().
Читайте: синтаксис регулярных выражений PCRE
И для вашего шаблона:
При использовании функций PCRE требуется, чтобы шаблон был заключен в разделители. Разделителем может быть любой не алфавитно-цифровой символ без обратной косой черты, без пробелов.
Часто используемыми разделителями являются косые черты (/), знаки хеша (#) и тильды (~).
Если в шаблоне необходимо сопоставить разделитель, его следует экранировать с помощью обратной косой черты. Если разделитель часто появляется внутри шаблона, рекомендуется выбрать другой разделитель, чтобы повысить удобочитаемость. Итак, ваш шаблон должен выглядеть так:
([^(folder)])/images/flash
[], который вы используете в [^(папка)], предназначен для указания набора символов, а не целого слова. Лучше использовать простые шаблоны и не усложнять шаблон поиска.
%^/folder/images/flash%
Это проще.I am using % as delimiter for readability.
Не используется #, потому что stackru будет рассматривать его как заголовок:P.