我希望能够从字符串/文件中删除所有非PHP数据。
现在这条preg_replace
行完美无缺:
preg_replace('/\?>.*\<?/', '', $src); // Remove all non php data
但是......问题是它只适用于第一场比赛,而不适用于所有的字符串/文件......
这里需要小调整;)
答案 0 :(得分:2)
反过来会更简单:
preg_match_all('~<\?.+?\?>~s', $src, $m);
$php = implode('', $m[0]);
匹配非php块非常棘手,因为它们也可以在第一个php块之前和最后一个块之后发生:blah <? php ?> blah
。
另请注意,没有正则表达式解决方案可以处理php字符串中的<?
,如:
<? echo "hi ?>"; ?>
您必须使用tokenizer来正确解析此问题。