1

PHPタグ内のコンテンツを一致させるのに問題があります。

現在、私はこのコードを持っていますが、うまくいきません:

<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>

コンテンツを取得して、eval() などの他の処理を実行できるようにする必要があります。

4

2 に答える 2

4

その場でやめてください、あなたはこのようにやりたくないのです!

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;
    }
}
于 2009-09-10T14:52:46.963 に答える
0

ピリオド (またはドット) は改行と一致しません:

([.\n\r]+)

そうしてください^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
于 2009-09-10T14:49:25.010 に答える