如何从字符串中删除PHP代码?

Gon*_*alo 7 php preg-replace

我有一个包含php代码的字符串,我需要从字符串中删除php代码,例如:

<?php $db1 = new ps_DB() ?><p>Dummy</p>
Run Code Online (Sandbox Code Playgroud)

应该回来 <p>Dummy</p>

例如,没有php的字符串<p>Dummy</p>应该返回相同的字符串.

我知道这可以用正则表达式来完成,但是4小时后我还没有找到解决方案.

Wri*_*ken 8

 <?php
 function filter_html_tokens($a){
    return is_array($a) && $a[0] == T_INLINE_HTML ?
      $a[1]:
      '';
 }
 $htmlphpstring = '<a>foo</a> something <?php $db1 = new ps_DB() ?><p>Dummy</p>';
 echo implode('',array_map('filter_html_tokens',token_get_all($htmlphpstring)));
 ?>
Run Code Online (Sandbox Code Playgroud)

正如ircmaxell所指出的:这需要有效的PHP!

一个正则表达式的路由是(允许没有带有短标签的'php'.字符串/文件中没有结尾?>(出于某种原因Zend推荐这个?)当然还有一个UNgreedy和DOTALL模式:

preg_replace('/<\\?.*(\\?>|$)/Us', '',$htmlphpstring);
Run Code Online (Sandbox Code Playgroud)