0

请问怎么做?

<?php
$string = '<inc="file.php">';
return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#',include("$1"),$string);
?>

输出是返回 $1

我需要返回包含 file.php

4

3 回答 3

4

如果您有 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);
?>
于 2012-04-28T20:11:18.277 回答
1

我不确定您要做什么,但请尝试使用preg_matchover preg_replace。

如果您使用它,它会将匹配项收集到一个数组中,如下所示:

preg_match('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#', $string, $matches);

然后将匹配项存储在$matches数组中。然后,您可以使用foreach.

于 2012-04-28T20:14:25.727 回答
1

我认为应该是

return preg_replace('#<inc\s*="\s*([a-zA-Z0-9\_]+)\">#','include("'.$1.'")',$string);

第二个参数应该是一个字符串。

于 2012-04-28T20:15:23.003 回答