Соответствие содержимого внутри тегов php с помощью регулярных выражений

StackOverflow https://stackoverflow.com/questions/1405708

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с сопоставлением содержимого внутри тегов 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); ?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top