【发布时间】:2013-03-02 16:04:11
【问题描述】:
如何使用 preg_match_all() 获取所有匹配项并将结果替换为空字符串?
我试过这样的东西:
<?php
$comments = array();
$selectors = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~',
function ($match) {
$comments[] = $match[0];
return '';
}, $input);
?>
但这并不能很好地工作,因为 $comment 变量似乎无法从匿名函数中访问。 我想我可以制作全局变量,但我真的不想那样搞乱命名空间
【问题讨论】:
-
为什么不直接使用 preg_replace ?
-
因为那时我无法获取/提取所有匹配项(已被替换)。或者这可能吗?
-
在函数声明中尝试
use:php.net/manual/en/functions.anonymous.php
标签: php regex preg-replace-callback