使用Preg_Replace保持删除的值

时间:2011-10-25 21:21:18

标签: php preg-replace

我正在使用preg_replace从字符串中删除一些内容。我想知道的是,是否有办法保留在不同变量中删除的东西。这是我正在使用的:

$city = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $content[2]);

3 个答案:

答案 0 :(得分:3)

首先使用preg_match_all()获取字符串中的所有匹配项,然后运行preg_replace()以进行实际替换。

答案 1 :(得分:2)

首先运行preg_match()以获取将被替换的内容,然后像您一样替换内容。

答案 2 :(得分:2)

您可以使用preg_replace_callback并将匹配项分配给变量,然后再在回调中替换它们:

$pattern = '/^([0-9]* \w+ )?(.*)$/';
$matches = array();
$replace = function($groups) use (&$matches)
{
    $matches = $groups;
    return $groups[2];
};
$city = preg_replace_callback($pattern, $replace, $content[2]);

var_dump($city, $matches);

但是在特定情况下,您根本不需要运行preg_replace,只需使用preg_match

$pattern = '/^([0-9]* \w+ )?(.*)$/';
$subject= $content[2];
$r = preg_match($pattern, $subject, $matches);    
list($replaced,,$city) = $matches; # the result you're looking for.