@KakorinCom

Как распарсить строку?

$content="<span>[[!redate?&date=`[[*date_show]]`]]</span>";
preg_match_all("/\[\[(.+?)\]\]/s",$content,$content_function);
print_r($content_function);

в ответ получаю массив:
Array
(
    [0] => Array
        (
            [0] => [[!redate?&date=`[[*date_show]]
        )
    [1] => Array
        (
            [0] => !redate?&date=`[[*date_show
        )
)

А нужно чтобы было так:
Array
(
    [0] => Array
        (
            [0] => [[!redate?&date=`[[*date_show]]`]]
        )
    [1] => Array
        (
            [0] => !redate?&date=`[[*date_show]]
        )
)

При этом строка может быть и просто
$content="<span>[[!redate]]</span>";
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@KakorinCom Автор вопроса
А как быть если строка например:
$content="<span>[[!redate?&date=`[[*date_show]]`]]</span>[[*date_show]]";

Можно чтобы она находила все вхождения? В моем варианте оно находит все, вот только двойные неправильно парсит, не понимаю как сделать.

РЕШЕНИЕ:
preg_match_all("~\[\[((?:(?R)|.)*?)]]~",$content,$content_function);

ВСЕМ СПАСИБО.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы