如何最好地从字符串中删除这些标签,以便准备将其传递给eval()?
例如,字符串可以是这样的:
<?php
echo 'hello world';
?>
Hello Again
<?php
echo 'Bye';
?>
显然,str_replace无法起作用,因为中间的两个php标签必须存在(第一个和最后一个需要被删除)
$removedPhpWrap = preg_replace('/^<\?php(.*)(\?>)?$/s', '$1', $phpCode);
这样做应该可以解决问题(未经测试)。
请告诉我你为什么想要这样做,我有95%的把握会有更好的方法。
eval("?> $string_to_be_evald <?");
这将会关闭隐式标签并使所有内容正常工作。
<? ?>
标签,而不仅仅是在开头和结尾。实际上,如果你看他的示例,里面有两组标签。因此,正则表达式可能是最可行的解决方案。 - Karl-Johan Sjögren?>
标签后有换行符,或者在第一个 <?php
标签前有前导空格(或任何其他围绕这些标签的空格),则此处建议使用的正则表达式方法将无法工作。 - sheatrim()
是这样工作的,但是 ltrim()
和 rtrim()
也是一样吗? - shea
eval
。;)(实际上只有25%的玩笑成分。) - deceze