【问题标题】:Remove all non php data from string从字符串中删除所有非 php 数据
【发布时间】:2014-12-10 11:00:22
【问题描述】:

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

现在这条preg_replace 行完美运行:

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

但是...问题是它仅适用于第一个匹配项,而不适用于所有字符串/文件...

这里需要小调整;)

【问题讨论】:

  • 在可能的情况下使用tokenizer 会更好。

标签: php html string file preg-replace


【解决方案1】:

反过来会更简单:

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

匹配非 php 块要复杂得多,因为它们也可能出现在第一个 php 块之前和最后一个之后:blah &lt;? php ?&gt; blah

另请注意,没有任何正则表达式解决方案可以处理&lt;?'s inside php 字符串,如:

<? echo "hi ?>";  ?>

您必须使用tokenizer 才能正确解析。

【讨论】:

  • 很好的答案!但是我仍然在这里缺少一些东西吗?看看: remove me 删除我 '; $php = preg_match_all('~~s', $src, $m); $php = implode('', $m[0]); var_dump ($m); var_dump ($php); /* 我期望得到: */ ?>
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 2019-04-16
  • 2010-12-04
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
相关资源
最近更新 更多