你將不得不才能看到的結果,查看源代碼,但是這是我想出了:
$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提到的,你可以有<?=
簡寫回聲統計。這將有可能改變你的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
另一種方法是檢查<?
(空間)的簡寫PHP語句。您可以包括一個空間(\s
)檢查此:
preg_match_all("/<\?+(php|=|\s)(.*?)\?>/",$string,$matches);
我想這只是取決於如何「嚴」,你想要的。
Update2:MikeM確實很好,關於意識到換行符。您可能會遇到在您的標籤運行在進入下一行實例:
<?php
echo $user_name;
?>
這可以很容易地通過使用s
改性劑skip linbreaks
解決:
preg_match_all("/<\?+(php|=|\s)(.*?)\?>/s",$string,$matches);
一個偉大的地方開始學習正則表達式是[www.regular-expressions.info](http://www.regular-expressions.info/)。 – jmbertucci 2013-04-04 21:19:59