Как с помощью регулярки вытащить значения в квадратных скобках?
Только начал изучать регулярные выражения. Столкнулся с такой ситуацией
имеется значения, их несколько и они разные, например
[IMG l="image.jpg" t="Картинка для баннера" d="Скрытое описание"] |
[IMG l="image.jpg" t="Картинка для баннера" d="Скрытое описание"]
Как перевести эти значения, по структуре в такие:
<img src="image.jpg" alt="Картинка для баннера" data="Скрытое описание"> |
<img src="image.jpg" alt="Картинка для баннера" data="Скрытое описание">
Дополнительно:
Берете документацию по регуляркам.
Берете сайт-тестер регулярок:
https://regex101.com/
Берете предварительную заготовку регулярки:
[IMG l="эксперимент_над_подбором_произвольной_подстроки_1" t="эксперимент_над_подбором_произвольной_подстроки_2" d="эксперимент_над_подбором_произвольной_подстроки_3"] |
[IMG l="эксперимент_над_подбором_произвольной_подстроки_1" t="эксперимент_над_подбором_произвольной_подстроки_2" d="эксперимент_над_подбором_произвольной_подстроки_3"]
Добиваетесь, чтобы значения l, t, d сматчились под разными индексами.
Потом в PHP подставляете сматченные значения из результирующего массива:
$result = '<img src="'.$matches[0].'" alt="'.$matches[1].'" data="'.$matches[2].'">'; |
$result = '<img src="'.$matches[0].'" alt="'.$matches[1].'" data="'.$matches[2].'">';
Обычная замена по списку известных тегов (заодно не пропускающая [SCRIPT], например).
<?php $input = '[IMG l="image.jpg" t="Картинка для баннера" d="Скрытое описание"]'; $result = preg_replace( '![IMG l="(.*?)" t="(.*?)" d="(.*?)"]!si', '<img src="$1" alt="$2" data="$3" />', $input ); var_dump($result); |
<?php $input = '[IMG l="image.jpg" t="Картинка для баннера" d="Скрытое описание"]'; $result = preg_replace( '![IMG l="(.*?)" t="(.*?)" d="(.*?)"]!si', '<img src="$1" alt="$2" data="$3" />', $input ); var_dump($result);
- забыли кавычку https://phpize.online/s/6t
- Slava Rozhnev, исправил ответ
- А потом кто-то меняет местами поля l, t и d...
- Rsa97, какой вопрос - такой и ответ. Но тут достаточно информации для "изучающего регулярки" чтобы справиться и с такой задачей. Просто делать придётся в 2 шага.
1. найти все теги [IMG]
2. внутри вхождений найти уже l=, d=, t= в любом порядке
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы извлечь значения в квадратных скобках с помощью регулярного выражения, вам нужно использовать следующий шаблон:
preg_match_all('/\[(.*?)\]/', $string, $matches); print_r($matches[1]);
Это регулярное выражение будет искать все подстроки, которые находятся между квадратными скобками в строке `$string` и сохранять их в массив `$matches`. Затем вы можете вывести эти значения с помощью `print_r($matches[1])`.
Например, если у вас есть строка "Пример [значение1] текст [значение2] еще текст", то после выполнения данного кода вы получите массив, содержащий `значение1` и `значение2`.
Помните, что в регулярных выражениях символ `\` используется для экранирования специальных символов, поэтому перед каждой квадратной скобкой в выражении стоит обратная косая черта.