結果を見るにはソースコードを表示する必要がありますが、これは私が思いついたものです:
$string = '<html>hello world, its a wonderful day</html>
<?php echo $user_name; ?> Some more text or HTML <?php echo $datetime; ?>
I just echoed the user_name and datetime variables.';
preg_match_all("/<\?php(.*?)\?>/",$string,$matches);
print_r($matches[0]); // for php tags
print_r($matches[1]); // for no php tags
更新: Reventで述べたように、簡略化された echo ステートメントを使用できます<?=
。preg_match_all
これを含めるように変更することが可能です:
$string = '<html>hello world, its a wonderful day</html>
<?php echo $user_name; ?> Some more text or HTML <?= $datetime; ?>
I just echoed the user_name and datetime variables.';
preg_match_all("/<\?(php|=)(.*?)\?>/",$string,$matches);
print_r($matches[0]); // for php tags
print_r($matches[1]); // for no php tags
もう 1 つの方法は<?
、省略形の php ステートメントの (スペース) をチェックすることです。\s
これを確認するために、スペース ( ) を含めることができます。
preg_match_all("/<\?+(php|=|\s)(.*?)\?>/",$string,$matches);
それは、あなたがどれだけ「厳格」になりたいかによると思います。
Update2: MikeMは、改行を意識することについて、良い点を指摘しています。タグが次の行にまたがる場合があります。
<?php
echo $user_name;
?>
s
これは、修飾子 toを使用することで簡単に解決できますskip linbreaks
。
preg_match_all("/<\?+(php|=|\s)(.*?)\?>/s",$string,$matches);