小编Pau*_*l S的帖子

preg_replace双重替换

我从正则表达式中获得了一些意想不到的结果,这意味着要替换名称空间上的类名.替换似乎发生了两次,因此被替换的类名是重复的(参见下面的示例).

我实际上通过将reg ex更改为匹配1或更多(+)而不是0或更多(*)来解决问题,这实际上对于我想要的更准确.

但是,我有点困惑为什么我首先得到一个问题.

以下是问题的示例:

$classns  = 'components\groups\GroupsController';
$newclass = 'GroupsAccess';
$classns = preg_replace('/[^\\\\]*$/', $newclass, $classns);
echo $classns;
Run Code Online (Sandbox Code Playgroud)

结果

components\groups\GroupsAccessGroupsAccess
Run Code Online (Sandbox Code Playgroud)

预期

components\groups\GroupsAccess
Run Code Online (Sandbox Code Playgroud)

*是否可能匹配单词边界或某种性质的东西?

对我来说令人困惑的部分是使用相同正则表达式的preg_match只显示一个结果,因此它似乎是preg_match如何运行正则表达式的特定内容.

例如

preg_match('/[^\\\\]*$/', $classns, $m);
var_dump($m);
Run Code Online (Sandbox Code Playgroud)

结果

array(1) { [0]=> string(12) "GroupsAccess" }
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

3
推荐指数
1
解决办法
1237
查看次数

标签 统计

php ×1

preg-replace ×1

regex ×1