質問

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