php - preg_replace() 替换第二次出现

标签 php replace preg-replace

这就是我现在所做的:

if (strpos($routeName,'/nl/') !== false) {
    $routeName = preg_replace('/nl/', $lang , $routeName, 1 );
}

我更换了 nl与前。 de .但是现在我想更换second occurrence .什么是最简单的方法来做到这一点?

最佳答案

@Casimir 的答案似乎适用于大多数情况。另一种选择是 preg_replace_callback 带柜台。如果您只需要替换特定的第 n 次出现。

#-- regex-replace an occurence by count
$s = "…abc…abc…abc…";
$counter = 1;
$s = preg_replace_callback("/abc/", function ($m) use (&$counter) {

     #-- replacement for 2nd occurence of "abc"
     if ($counter++ == 2) {
          return "def";
     }

     #-- else leave current match
     return $m[0];

}, $s);

这利用了本地 $counter , 在每次出现时在回调中递增,并且在此处简单地检查固定位置。

关于php - preg_replace() 替换第二次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239061/

相关文章:

php - 将当前类别名称附加到 woocommerce 类别文件上的产品标题

php - MYSQL:SQL查询获取自增字段的值

c - 在C中替换字符串中的整个单词而不是子字符串

windows - Web Deploy (MSDeploy) 3.6 替换规则重命名文件

php - 没有定期刷新的 AJAX 聊天?

java - 字符串文字中的正则表达式

PHP 正则表达式最后一次出现的单词

php - pcre.backtrack_limit 的 "unit"是什么?

javascript - jquery .replace(/./g, "") 对我不起作用,但对其他人不起作用

javascript - 使用 AJAX 执行通过 PHP 交付的 javascript 代码