Preg replace php wordpress

Регулярные выражения в PHP часть 1 (preg_replace)

Регулярные выражения в PHP — это мощный инструмент, который в умелых руках может творить чудеса. Знание регулярных выражений не слишком важно для создания сайтов, потому что они довольно редко встречаются в проектах. Но некоторые особо важные функции просто невозможно сделать без них. Поэтому стоит хотя бы ознакомиться с темой.

Пользуйтесь регулярными выражениями только в том случае, если нет никакого другого способа решения задачи.

Типичная жизненная ситуация:
У программиста была одна проблема. Он решил эту проблему с помощью регулярного выражения. Теперь у программиста есть две проблемы!

Регулярные выражения лучше всего начать изучать с функции preg_replace. Эта функция очень похожа по своей функции на str_replace, которая заменяет часть строки на другую строку. Только на первым параметром функции preg_replace является регулярное выражение. Попробуем сравнить их простейшее использование

  • «i» означает отключение чувствительности к регистру искомого символа
  • «u» означает, что нужно включить в функции preg_replace поддержку UTF-8 кодировки. Иначе кириллица будет обрабатываться неправильно
ТиШе, мыШи, кот на крыШе ТиШе, мыШи, кот на крыШе

Но сила регулярных выражений в том, что в искомой строке можно задавать символы-команды. Приведём пример: буквы и цифры внутри регулярного выражения будут искаться и заменяться как есть, но символ точки «.» буде восприниматься как любой символ. То есть:

Тише, МЫШИ, кот на крыше Тише, мыши, кот на сыре

Операторы повторения

  • + — символ повторяется один или более раз
  • * — символ повторяется ноль или более раз
  • ? — символ повторяется ноль или один раз. То есть может присутствовать или нет
Читайте также:  Тег DIV, атрибут title

Ограничение жадности

Регулярное выражение захватывает максимально возможное количество символов. Поэтому результат может быть неожиданным. К примеру. предположим, что нам надо заменить в строке «Тише, мыши, кот на крыше» слово «Тише» на «Громче». Для этого используем выражение:

Может показаться, что выражение сработает правильно. Но по факту оно найдёт букву «Т» в начале строки и букву «е» не в конце первого слова, а в конце всей строки. Результат получится такой:

Чтобы этого не происходило, необходимо ограничить жадность регулярного выражения. Для этого необходимо после оператора повторения (звёздочки «*» или плюса «+») поставить знак вопроса «?», чтобы они перестали быть такими жадными.

Группирующие круглые скобки

Как было сказано ранее, операторы повторения работают только на символ, который стоит до них. Если же необходимо применить оператор повторения на несколько символов, то необходимо поставить скобки. Приведём пример:

Из кода видно, что оператор повторения будет применяться к двум символам, стоящим в круглых скобках — (ыш). Результат выполнения такого кода:

Квадратные скобки

Существуют квадратные скобки. Если круглые являются «группирующими», или в терминах логики они делают соединение «и», то квадратные скобки — это логическое «или». Приведём пример:

В результате выполнения этого кода все буквы «н», «ш», «р», которые стоят в квадратных скобках [ншр] будут заменены на восклицательный знак «!».

Существует ещё возможность сделать отрицание в квадратных скобках. Тогда будут заменены все символы, которые в них не попали. Это делается с помощью значка возведения в степень «^»:

  • [а-я] — все строчные буквы
  • [а-д] — строчные буквы от «а» до «д»: а, б, в, г, д
  • [а-яА-Я] — все строчные и заглавные буквы
  • 7 — все цифры
  • 5 — цифры: 4, 5, 6, 7

Экранировка спецсимволов

Не являются спецсимволами:
@ : , ‘ » ; — _ = < >% # ~ `& ! /

К примеру, необходимо заменить все знаки «+» в строке. Но в регулярном выражении «+» является оператором повторения. Чтобы снять с него все функции и сделать простым символом, как буквы или цифры, необходимо поставить перед ним знак падающего слеша «\», чтобы получилось «\+»:

В таком случае говорят, что знак «+» экранирован, поэтому не воспринимается как спецсимвол. Результат будет таким:

Ограничители

По бокам регулярного выражения мы ставили ограничители «#». Но ограничителем может быть не только символ решётки, но и другие спецсимволы. К примеру: «/», «&» и даже скобки «(» . «)». Всё зависит от того, что мы хотим использовать внутри выражения. Если будет использована решётка, то внутри её придётся экранировать. Но если поставить ограничители «&», то решётку внутри них не придётся экранировать:

Тише, мыши, кот на крыше Тише, мыши, кот на крыше

Источник

Как заменить данные в записях WordPress используя регулярные выражений в PHP

Admin 30.10.2017 , обновлено: 10.11.2017 WordPress

Уже имеется заметка, как массово поменять текст в WordPress. В этой же статье разберу замену текста при выводе записей (the_content), а также использование регулярных выражений.

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

Разберем регулярные выражения на примере поиска и замены как самого текста, так и элементов внутри определенных дивов при выводе информации в WordPress .

Для удобства замены преобразуем вывод поста в переменную

Контент записи в WordPress выводится функцией:

Положим содержимое функции вывода поста (the_content) в переменную $content:

Теперь мы можем выводить содержимое поста таким образом:

Удаление данных с помощью preg_replace

Теперь для удаления данных со страницы записи WordPress используем такую конструкцию, которая изменит содержимое переменной $content. А именно найдет в данных нужный нам текст, структуру html и любое другое содержимое, а затем удалит её со страницы.

Удаление содержимого в конкретном див теге (с конкретным классом):

Удаление всего конкретного див тега:

Остальные примеры можно найти в статье про preg_replace.

Вывод данных с помощью preg_match

Вместо предыдущей функции preg_replace, где мы убираем текст, с помощью preg_match можно находить конкретные данные и сохранять их в переменную для последующего вывода.

preg_match(«/

(.*?)/s», $post->post_content, $matches);

то, где мы ищем, в данном случае мы ищем информацию в записи WordPress страницы.

Когда мы нашли мы можем вывести эту запись в любом другом месте.

Или даже сохранить в произвольное поле, содержимое которого также можем вывести в любом другом месте.

Больше примеров смотрите в статье о preg_match.

Читайте также

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Источник

Примеры функции замены preg_replace в PHP

Admin 30.10.2017 , обновлено: 21.12.2017 PHP

С помощью функции preg_replace можно находить и изменять требуемые данные на странице.

Также читайте статью, где функцией preg_replace мы удаляем данные в профиле пользователя WordPress.

Есть схожая функция, которая вместо замены находит данные для последующей обработки, называется preg_match.

Первый параметр, с помощью регулярных выражений задаёт критерий поиска.

Второй параметр указывает на что меняем найденные данные.

Третий параметр — там где мы производим поиск.

preg_replace в DIV

Удаление содержимого внутри тега DIV:

Удаление содержимого вместе с самим тегом div:

Удаление содержимого в конкретном див теге (с конкретным классом):

Удаление всего конкретного div тега:

Удаляем изображение из контента:

$content = preg_replace(«/]+\>/i», «», $content);

preg_replace для цифр и знаков

Удаляем всё постороннее кроме цифр:

Удаление запятой из слов и цифр:

Удаление пробелов внутри цифры:

Иногда похожие задачи выполняют другие php функции:

Удаление пробелов с обоих сторон от цифр:

Удаление всех пробелов сначала и с конца выражения:

Читайте также

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Источник

Оцените статью