从字符串中删除所有非PHP数据

时间:2014-12-10 11:00:22

标签: php html string file preg-replace

我希望能够从字符串/文件中删除所有非PHP数据。

现在这条preg_replace行完美无缺:

preg_replace('/\?>.*\<?/', '', $src); // Remove all non php data

但是......问题是它只适用于第一场比赛,而不适用于所有的字符串/文件......

这里需要小调整;)

1 个答案:

答案 0 :(得分:2)

反过来会更简单:

preg_match_all('~<\?.+?\?>~s', $src, $m);
$php = implode('', $m[0]);

匹配非php块非常棘手,因为它们也可以在第一个php块之前和最后一个块之后发生:blah <? php ?> blah

另请注意,没有正则表达式解决方案可以处理php字符串中的<?,如:

<? echo "hi ?>";  ?>

您必须使用tokenizer来正确解析此问题。