在php中有一种方法可以组合preg_match_all和preg_replace吗?
有一个字符串$string
,如:
Lorem Ipsum`代码块`lorem`code`
我想从字符串中删除代码块并保留$ string(不带代码块),但也保留一个匹配数组,就像我用preg_mach_all得到的那样。
[
0 => `code block`,
1 => `code`
]
这可以在php的一个命令中使用吗?
答案 0 :(得分:1)
您可以使用preg_replace_callback
:
$s = 'Lorem Ipsum `code block` lorem `code`';
$matches = array(); // array to keep removed matches
$repl = preg_replace_callback('/(`[^`]*`)\h*/', function($m) use(&$matches) {
$matches[]=$m[1]; return ''; }, $s);
echo $repl . "\n";
print_r($matches);
<强>输出:强>
Lorem Ipsum lorem
Array
(
[0] => `code block`
[1] => `code`
)