如何使用preg_replace()返回匹配值

时间:2012-04-28 20:07:50

标签: php regex

请问怎么做?

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

输出返回$ 1

我需要返回包含file.php

3 个答案:

答案 0 :(得分:3)

如果你有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);
?>

答案 1 :(得分:1)

我不确定你要做什么,但尝试使用preg_match而不是preg_replace。

如果你使用它,它会将匹配收集到一个数组中:

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

然后匹配存储在$matches数组中。然后,您可以使用foreach循环它们。

答案 2 :(得分:1)

我认为应该是

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

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