0

如何使用例如 preg_match_all() 获取所有匹配项,并将结果替换为空字符串?

我试过这样的东西:

<?php
$comments   = array();              

$selectors  = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~',
function ($match) {
    $comments[] = $match[0];
    return '';
}, $input);
?>

但这并不能很好地工作,因为 $comment 变量似乎无法从匿名函数中访问。我想我可以制作全局变量,但我真的不想像那样搞乱命名空间

4

1 回答 1

0

这应该有效:

<?php
$comments   = array();              

$selectors  = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~',
function ($match) use (&$comments) {  //add the variable $comments to the function scope
    $comments[] = $match[0];
    return '';
}, $input);
?>
于 2013-03-14T11:01:09.927 回答