PHP - 从字符串中删除<?php?>标记

Ale*_*lex 5 php tags string eval

从字符串中删除这些标记的最佳方法是什么,以准备传递给eval()?

例如.字符串可以是这样的:

<?php
  echo 'hello world';
  ?>
  Hello Again
  <?php

  echo 'Bye';
?>
Run Code Online (Sandbox Code Playgroud)

显然str_replace不起作用,因为中间的两个php标签需要在那里(第一个和最后一个需要删除)

Cod*_*ust 5

通常,您不希望将函数传递给 eval。如果您只想删除标签,string_replace 可以很好地完成这项工作,但是您最好使用正则表达式。

preg_replace(array('/<(\?|\%)\=?(php)?/', '/(\%|\?)>/'), array('',''), $str);

这包括 old-asp 标签、php 短标签、php echo 标签和普通 php 标签。


ale*_*lex 4

听起来是个坏主意,但如果你想删除开头和结尾,你可以这样做

$removedPhpWrap = preg_replace('/^<\?php(.*)(\?>)?$/s', '$1', $phpCode);
Run Code Online (Sandbox Code Playgroud)

应该可以做到(未测试)。

请告诉我你为什么要这样做,我 95% 确信有更好的方法。