preg_match 有效,但 preg_replace 无效

preg_match works but preg_replace does not

我有一个带有 php (7.4.4) 的本地 xampp 版本,它从 mysql 数据库中获取文本并替换其中的特定文本。我是运行PHPStorm中的脚本作为“PHP脚本”手动调试。但是,它匹配,但不替换。我有一个小例子来检查:

$description = join(" ", $words);
    if(preg_match("/\(\s*see\s*\)/", $description)) {
        echo $result['id']." Matches\n";
    }
    preg_replace(["/\(from\s*\)/", "/\(\s*see\s*\)/"], "", $description);
    if(preg_match("/,/", $etymologies)) {
        echo "Word ". $result['kirundi0'] . " with id ". $result['id']. " has multiple etymologies and now description: " . $description. "\n";
    }

所以,当我用这句话喂它时:“1.一个,单身,2.一些(带复数前缀),3.相同,(见)” 最后一部分应该被切断,因为它引用了我删除的内容。在控制台可以看到的日志是:

3164 Matches
Word -mwe with id 3164 has multiple etymologies and now description: 1. one, single, 2. some (with pl. prefix ), 3. same, (see )

所以它与 preg_match 匹配,但永远不会发生替换。我正在尝试使用 W3Schools preg_replace 示例的模式,即使在那里它也能正常工作。 regex101.com 也表示没有问题。文字不太长,对我来说应该没问题php.ini

实际上,我什至对这种行为感到困惑,因为我已经在另一个项目的同一台服务器上使用了 preg_replace,并且它运行得非常好。

你试过了吗?

$yourVar = preg_replace(["/\(from\s*\)/", "/\(\s*see\s*\)/"], "", $description);

根据文档preg_replace 参考无效。