正規表現を使用して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