Avatar ·

如何在 PHP 中只替换子字符串的第一次出现?(针对第一个匹配项的 str_replace)

大家好!我写 PHP 时遇到了一个意想不到的问题。我有一个字符串,需要只替换其中某个子字符串的第一次出现,而保持其余部分不变。 举个例子。假设我有 HTML 代码或纯文本: ```php $text = "Яблоко, банан, яблоко, апельсин, яблоко"; $search = "яблоко"; $replace = "груша"; ``` 我希望结果是:"Яблоко, банан, груша, апельсин, яблоко" —— 即只替换第二次出现(不区分大小写的第一次,但这不重要)。或者,如果我想替换真正的第一次出现,得到 "груша, банан, яблоко, апельсин, яблоко"。 问题在于标准函数 `str_replace()` 会替换所有出现。我试过 `str_replace($search, $replace, $text)`,但它把每个 "яблоко" 都替换成了 "груша",而我只需要替换一个。我知道有 `preg_replace()`,但也许有更简单的不用正则表达式的解决方案?或者如何正确使用 `preg_replace()` 并限制替换次数?