Еще давно, когда я узнал о выходе PHP 5.3, мне захотелось перевести на него свои сайты. Но руки все не доходили, да и боялся проблем с совместимостью. Но вот, после одного из обновлений WordPress, в истории изменений отдельно было отмечено, что движок теперь полностью работоспособен на последней версии PHP. Через пару месяцев после этого сообщения, я решился: залез в панель управления хостингом, и переключил сайт на PHP 5.3. Проверил, вроде бы все работает, кроме сообщений о том, что в одном плагине используется не рекомендованная функция. Нашел плагин, отключил его. Вроде бы весь функционал продолжал работать, ничего не “пропало”. Удивился, как это у меня был активен неиспользуемый плагин, и забыл об этом. Это было где-то два месяца назад…
В течении последних пары месяцев, я начал замечать, что доход от Google AdSense резко упал. Точнее, за май он составил $0.00. Это меня сильно удивило, потому что за последний год каждый месяц капало как минимум по $1, а то и по $2. Сначала я списал все на простое невезение, всякое бывает. Хотя, сомнение все равно закралось. Сегодня я, изучая статистику AdSense более внимательно, заметил, что число показов объявлений равнялось… двум! И это против обычных пары тысяч! Картина начала прорисовываться. Зашел на сайт. Ну точно, объявления не показываются. Включил плагин, появились. Как я этого не заметил, когда его выключал – не понятно.
Теперь встала задача запустить показ объявлений без появления дурацкого предупреждения об использовании не рекомендованной функции. Плагин (а он назывался Whydowork AdSense Plugin) оказался заброшен владельцем, и давно не обновлялся, но искать другой не хотелось. Поскольку весь код плагина уменьшается в 400 строк кода, было принято решение просто ручками заменить устаревшие функции на рекомендованные. Таких мест оказалось всего три. А использовалась в них, к счастью, одна и та же функция int ereg ( string $pattern , string $string [, array &$regs ] ).
В той же документации я нашел, что вместо этой функции рекомендуется использовать int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ). Так что задача стояла простая: заменить ereg(…) на preg_match(…) в коде плагина.
Заменил. Но я не прочитал документацию и у этих двух функций оказались немного разные требования к передаваемым параметрам. Короче, после правки плагин перестал работать. Пришлось гуглить. В гугле я нашел неплохую инструкцию с объяснениями, как следует осуществлять замену ereg(…) на preg_match(…). В моем случае все свелось к простому добавлению к передаваемому выражению знака “/”, в соответствии с примером: ereg(‘expression’) -> preg_match(‘/expression/’).
В результате Whydowork AdSense Plugin заработал и снова вступил на боевое дежурство. Его обновленную версию с моими небольшими правками можно скачать ниже по сслыке. Теперь он совместим с PHP версией 5.3 и готов к применению не только в моих проектах!
Скачать бесплатно модифицированный Whydowork AdSense Plugin.
Полезная статья? Их будет больше, если вы поддержите меня!