Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Preg_Replace保留删除的值_Php_Preg Replace - Fatal编程技术网

Php 使用Preg_Replace保留删除的值

Php 使用Preg_Replace保留删除的值,php,preg-replace,Php,Preg Replace,我使用preg_replace从字符串中删除一些内容。我想知道的是,是否有一种方法可以将被删除的内容保存在另一个变量中。以下是我正在使用的: $city = preg_replace('/^([0-9]* \w+ )?(.*)$/', '$2', $content[2]); 首先运行preg_match()以获取将被替换的内容,然后按原样替换内容。首先使用preg_match_all()获取字符串中的所有匹配项,然后运行preg_replace()以进行实际替换。在回调中替换变量之前,可以使用

我使用preg_replace从字符串中删除一些内容。我想知道的是,是否有一种方法可以将被删除的内容保存在另一个变量中。以下是我正在使用的:

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

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

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

在回调中替换变量之前,可以使用匹配项并将其分配给变量:

$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\u replace
,只需使用
preg\u match

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

一旦找到匹配项,就不需要再使用
preg\u replace()
,可以使用
str\u replace()
。毕竟,不再需要匹配:)。