Регулярні вирази. Пошук посилань

22

Від автора: вітаю вас, друзі. З цієї статті ви дізнаєтеся, як за допомогою регулярних виразів знайти в тексті посилання і зробити що-то з ними. Наприклад, ми можемо їх просто вирізати. Або замінити на щось своє. Загалом, з допомогою регулярних виразів ми можемо зробити з посиланнями в тексті буквально що завгодно. Почнемо?

Отже, у нас є якийсь текст, в якому, як ви бачите нижче, є пара посилань.

Регулярні вирази. Пошук посилань

Тепер нам необхідно вирішити класичну задачу в PHP — знайти і, скажімо, замінити всі посилання на якийсь текст. Давайте, як завжди, почнемо з складання регулярного виразу, яке знайде всі посилання в цьому масиві тексту. Ну а потім розберемо складений шаблон регулярного виразу.

Варіант шаблону може виглядати так:

$pattern = «/]+»>.+?/»;

Регулярні вирази. Пошук посилань

Як бачимо, він відпрацював коректно і всі посилання були знайдені. Тепер Давайте розберемо його.

«[^>]+»> — ця частина збігається зі значенням атрибута href. Зверніть увагу, всередині символьного класу — [] — ми використовували вже знайомий нам метасимвол ^, який на початку шаблону означає початок рядка. Однак на початку символьного класу метасимвол ^ вже означає заперечення, тобто в даному випадку ми говоримо, що у лапках може бути будь-який символ (один і більше), крім >. В результаті дві озвучені частини шаблону співпадуть з наступним рядком — ;

.+? — ця частина шаблону співпаде з анкором посилання. Тут є вже знайома нам конструкція — .+ — точка співпадає з будь-яким символом, а квантіфікатор + дозволяє знайти 1 і більше таких символів. А що за знак питання? Він робить наш шаблон нежадібним. Спробуйте прибрати його і подивіться, що вийде в підсумку;

— остання частина шаблону співпаде з закриваючим тегом посилання. Тут ми обов’язково экранируем слеш, оскільки слеш використаний нами в якості обмежувачів шаблону. Якщо б в якості обмежувачів ми використовували, наприклад, # — потреби в екрануванні слеша не було б.

Тепер залишилося просто замінити знайдені посилання на те, що нам потрібно.

Регулярні вирази. Пошук посилань

Все вийшло! Це був найпростіший приклад. Насправді регулярні вирази дозволяють набагато більш гнучко вирішувати завдання. Наприклад, ми можемо замінити тільки анкор (текст посилання). Або тільки URL посилання, залишивши анкор недоторканим. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами.

На цьому ми будемо завершувати сьогоднішню статтю. Удачі!