Я хотел бы проанализировать строку в этом формате ++ VAR ++.Включая знак плюса в preg_match_all
Я пробовал preg_match_all ("++. *? ++", $ input, $ matches); но не удалось. Я что-то упустил?
Я хотел бы проанализировать строку в этом формате ++ VAR ++.Включая знак плюса в preg_match_all
Я пробовал preg_match_all ("++. *? ++", $ input, $ matches); но не удалось. Я что-то упустил?
Вы пропустили, чтобы избежать +, а также забыли добавить php-разделители.
preg_match_all('~\+\+.*?\+\+~', $input, $matches);
Ваше регулярное выражение отсутствует regex delimiters. Кроме того, +
представляет собой специальный метасимвол регулярного выражения (a один или несколько кванторов), он должен быть экранирован, чтобы обрабатываться как буквенный символ.
Если у вас есть только буквенно-цифровые символы, чтобы соответствовать внутри только двойной плюс символы, вы можете использовать
preg_match_all('~(?<!\+)\+\+(\w+)\+\+(?!\+)~', $txt, $matches);
См this regex demo.
См IDEONE demo:
$re = '~(?<!\+)\+\+(\w+)\+\+(?!\+)~';
$str = "I have ++VAR++ and +++++++++++ and +++text+++++ and ++ANOTHER_VAR++.";
preg_match_all($re, $str, $matches);
print_r($matches);
Как это провал? Несомненно, вы пропустили разделители регулярных выражений. У вас есть строки типа '++++++++++', которые вы не хотите сопоставлять? Попробуйте ['preg_match_all ('~ (?
Вы проверили ответы? –