请问怎么做?
<?php
$string = '<inc="file.php">';
return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#',include("$1"),$string);
?>
输出是返回 $1
我需要返回包含 file.php
如果您有 PHP 5.3 或更高版本:
<?php
$string = '<inc="file.php">';
return preg_replace_callback('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#', function($matches) {
return include $matches[1];
}, $string);
?>
我不确定您要做什么,但请尝试使用preg_match
over preg_replace。
如果您使用它,它会将匹配项收集到一个数组中,如下所示:
preg_match('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#', $string, $matches);
然后将匹配项存储在$matches
数组中。然后,您可以使用foreach
.
我认为应该是
return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#','include("'.$1.'")',$string);
第二个参数应该是一个字符串。