#php #regex #preg-match
#php #регулярное выражение #preg-match
Вопрос:
Как я могу сопоставить только точный встроенный код и сопоставить два if дважды, а не как одно совпадение.
Я хочу получить результат с:
Массив ([0] => asd [1] => asd)
нет
Массив ([0] => asdasd)
Комментарии:
1. Будущему пользователю этого сайта было бы полезно, если бы вы вставили пример кода и выражения, которые вы пробовали, в вопрос выше. Используйте символ обратного тика (на
~
клавише), чтобы заключить текст или код в кавычки или сделать отступ кода на четыре или более пробела, чтобы выделить его из остального текста
Ответ №1:
http://regexr.com ?2uvuu — используйте выражение:
<!--s IFs ([^s]*)s-->([^<]*)<!--sENDIFs-->
Редактировать:
Учитывая, что то, что вы хотите сопоставить внутри «тега» оператора if, может содержать пробелы, немного более медленное выражение, которое должно обрабатывать что-либо внутри «оператора if», должно быть следующим (в RegExr):
/<!--s IFs (.*?)s-->([^<]*)<!--sENDIFs-->/gixsm
Если затем вы хотите иметь возможность захватывать другие теги (или символ <
) внутри результата (если оператор «true», вы захотите использовать (опять же, немного медленнее) выражение (в регулярном выражении):
/<!--s IFs (.*?)s-->(.*?)<!--sENDIFs-->/gixsm
ЗАВЕРШЕНИЕ РЕДАКТИРОВАНИЯ
Комментарии:
1. Что о <!— IF test == 3 —>АСД<!— ENDIF —> ?
2. Извините, но ваш вопрос был очень неполным, и я не знаю, о чем вы спрашиваете, поэтому, полагаю, я дал неполный ответ. Я понятия не имею, что может появиться в вашем if «statement», потому что я не знаю синтаксиса. Я попробую еще раз!
3. Привет, извините, я забыл упомянуть об этом синтаксисе, он довольно вложенный. Спасибо за идеальный код! 🙂
4. Привет, еще раз извините за вопрос, но как насчет этого: regexr.com ? 2v00e ? Тег внутри тега.
5. Если вы пытаетесь вложить логику ‘if’, вам либо придется найти или определить какой-то способ, чтобы ifs и endif выглядели иначе, чем друг у друга, либо вам придется использовать какой-то тип реального синтаксического анализатора. Полное решение выходит далеко за рамки этого комментария, но дифференциация может быть достигнута путем присвоения тегам beginning и ending if идентификатора, подобного
<!-- IF(0) x == 5 --> <!-- IF(1) blah is true --> asdf <!-- ENDIF(1) --> ghjkl <!-- ENDIF(0) -->
этому, вы можете сопоставить начальный и конечный теги, чтобы проанализировать их отдельно. Кроме того, пожалуйста, посмотрите мой комментарий к вашему вопросу.