Соответствие содержимого внутри тегов php с помощью регулярных выражений
Вопрос
У меня возникли проблемы с сопоставлением содержимого внутри тегов php.
В настоящее время у меня есть этот код, но он не работает для меня:
<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>
Мне нужно получить содержимое, чтобы я мог делать с ними другие вещи, например, eval ().
Решение
Остановись, ты не хочешь делать это таким образом!
Вы можете использовать расширение токенизатора PHP для разбить строку на токены, которые надежно найдут весь исходный код PHP. Затем вы можете сделать любое преобразование с токенами. Регулярные выражения не являются инструментом для этой работы (не хотите тушить огонь ложкой?)
$tokens = token_get_all($string);
foreach ($tokens as $token) {
if (is_array($token)) {
if (!in_array($token[0], array(T_INLINE_HTML, T_OPEN_TAG, T_CLOSE_TAG))) {
echo $token[1];
}
} else {
echo $token;
}
}
Другие советы
точка (или точка) не соответствует новым строкам:
([.\n\r]+)
сделай это ^^
<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
Не связан с StackOverflow