我正在使用preg_replace从字符串中删除一些内容。我想知道的是,是否有办法保留在不同变量中删除的东西。这是我正在使用的:
$city = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $content[2]);
答案 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.