@Bestolkovy

Как написать регулярное выражение на PHP?

Добрый день!

Есть текст вида:

<p>Привет, Мир! Мы [bar]прибыли[/bar] в это [bar]место[/bar] не зря!
[bar]Привет, Мир![/bar]</p>

[bar]Привет, Мир!
Привет, Мир![/bar]

[bar]Привет, Мир![/bar]

Необходимо на лету обработать все отдельно стоящие шорткоды [bar]...[/bar]. То есть те, которые находятся не в составе предложения (не внутри какого-либо тега, а отдельно стоящие).

Для такой функции:

if ( preg_match( "/^\[bar\][\s\S]*?\[\/bar\]$/miu", $content ) ) {
  // здесь на лету обрабатываем все отдельно стоящие шорткоды [bar]
} else {
  // а здесь все остальные
}


Хотя я и чётко прописал регулярное выражение:

/^\[bar\][\s\S]*?\[\/bar\]$/miu

Но в нём упорно не хочет срабатывать символ конца строки $ и оно загребает все шорткоды.
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
preg_match_all спарсить все ^\[foo\][\s\S]*?\[\/foo\]$ они окажется в массиве, потом удалить все элементы массива кроме последних двух
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Добавьте модификатор m (PCRE_MULTILINE)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽