PHP preg_match_all () для вывода всех php-тегов

У меня есть большой набор HTML-файлов, которые мне нужно проанализировать <? and ?> <? and ?> теги из, имея в виду <?xml и тот факт, что открывающий <?php не нуждается в конечном теге … EOF тоже подсчитывается.

Мне известно, что у моего знания регулярного выражения недостает: /<\?[^(\?>)]*\?>/


Пример HTML:

 <? function trans($value) { // Make sure it does not translate the function call itself } ?> <!-- PHP code --> <div id='test' <?= $extraDiv ?>> <?= trans("hello"); ?> <? if ($something == 'hello'): ?> <? if ($something == 'hello'): ?> <p>Hello</p> <? endif; ?> <?php // Some multiline PHP stuff echo trans("You are \"great'"); // I threw some quotes in to toughen the test echo trans("Will it still work with two"); echo trans('and single quotes'); echo trans("multiline stuff "); echo trans("from array('test')",array('test')); $counter ++; ?> <p>Smart <?= $this->translation ?> time</p> <p>Smart <?=$translation ?> time</p> <p>Smart <?= $_POST['translation'] ?> time</p> </div> <? trans("This php tag has no end"); 

Hoped for Array:

 [0] => "<? function trans($value) { // Make sure it does not translate the function call itself } ?>", [1] => "<?= $extraDiv ?>", [2] => etc... 

Related of "PHP preg_match_all () для вывода всех php-тегов"

Нет, это не то, как работают классы символов. К счастью, вам не нужно беспокоиться об этом, потому что мы можем использовать ? чтобы сделать класс персонажа неживым. Я также добавлю s в конец так, чтобы . также может соответствовать символам новой строки, обычно это невозможно.

 /<\?(.*?)\?>/s 

Похоже, что вы ищете, это взгляд и взгляд. Эти операторы регулярных выражений в основном позволяют включать текст в поиск, но опустить его из окончательного результата.

Итак, сначала вы хотите изменить свое регулярное выражение так:

 '/(?<=\<\?)[^(\?\>)]*(?=\?\>)/' 

Для EOF вы должны использовать символ $. Следовательно:

 '/(?<=\<\?)[^(\?\>)]*(?=\?\>|$)/' 

Я не тестировал это, но я думаю, что он должен делать то, что вы ищете, или, по крайней мере, указать вам в правильном направлении.