php中有没有一种方法可以组合preg_match_all和preg_replace?
具有类似于:的字符串$string
Lorem Ipsum`代码块`Lorem`代码`
我想从字符串中删除代码块,并保留$string(没有代码块),但也要保留一个匹配数组,就像我使用preg_mach_all一样。
[
0 => `code block`,
1 => `code`
]
这在php中的一个命令中可能吗?
您可以使用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`
)