Вы должны просмотреть исходный код для того, чтобы увидеть результаты, но это то, что я придумал:
$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
Update: Как упомянуто 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);
большое место, чтобы начать обучение о Regex [www.regular-expressions.info] (http://www.regular-expressions.info/). – jmbertucci