От автора: приветствую вас, друзья. Из этой статьи вы узнаете, как с помощью регулярных выражений найти в тексте все ссылки и что-то сделать с ними. Например, мы можем их просто вырезать. Или заменить на что-то свое. В общем, с помощью регулярных выражений мы вольны сделать со ссылками в тексте буквально что угодно. Начнем?
Итак, у нас есть некий текст, в котором, как вы видите ниже, есть пара ссылок.
Теперь нам необходим решить классическую задачу в PHP — найти и, скажем, заменить все ссылки на некий текст. Давайте, как обычно, начнем с составления регулярного выражения, которое найдет все ссылки в данном массиве текста. Ну а затем разберем составленный шаблон регулярного выражения.
Вариант шаблона может выглядеть так:
1 |
$pattern = "/<a href="[^>]+">.+?<\/a>/"; |
Как видим, он отработал корректно и все ссылки были найдены. Давайте теперь разберем его.
<a href= — для начала мы ищем часть ссылки до значения атрибута href;
«[^>]+»> — эта часть совпадает со значением атрибута href. Обратите внимание, внутри символьного класса — [] — мы использовали уже знакомый нам метасимвол ^, который в начале шаблона означает начало строки. Однако в начале символьного класса метасимвол ^ уже означает отрицание, т.е. в данном случае мы говорим, что в кавычках может быть любой символ (один и более), кроме >. В итоге две озвученные части шаблона совпадут со следующей строкой — <a href=»link1.html»>;
.+? — эта часть шаблона совпадет с анкором ссылки. Здесь есть уже знакомая нам конструкция — .+ — точка совпадает с любым символом, а квантификатор + позволяет найти 1 и более таких символов. А что за вопросительный знак? Он делает наш шаблон нежадным. Попробуйте убрать его и посмотрите, что получится в итоге;
<\/a> — последняя часть шаблона совпадет с закрывающим тегом ссылки. Здесь мы обязательно экранируем слеш, поскольку слеш использован нами в качестве ограничителей шаблона. Если бы в качестве ограничителей мы использовали, к примеру, # — необходимости в экранировании слеша не было бы.
Теперь осталось просто заменить найденные ссылки на то, что нам нужно.
Все получилось! Это был простейший пример. На самом деле регулярные выражения позволяют гораздо более гибко решать задачу. Например, мы можем заменить только анкор (текст ссылки). Или только URL ссылки, оставив анкор нетронутым. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям.
На этом мы будем завершать сегодняшнюю статью. Удачи!