gpt4 book ai didi

php - 如何仅在 PHP 中使用 str_replace() 删除一定次数的文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:03 32 4
gpt4 key购买 nike

我试图从字符串中多次删除单词“John”。我在 php 手册上读到 str_replace 除了名为“count”的第四个参数。所以我认为 可以用来指定应该删除多少个搜索实例。但事实似乎并非如此,因为:

$string = 'Hello John, how are you John. John are you happy with your life John?';

$numberOfInstances = 2;

echo str_replace('John', 'dude', $string, $numberOfInstances);

将单词“John”的所有实例替换为“dude”,而不是只替换两次并单独留下其他两个 John。

就我而言,替换发生的顺序无关紧要,例如可以替换前 2 个实例,或者后两个实例或组合,替换的顺序无关紧要。

那么有没有办法以这种方式使用 str_replace() 或是否有另一个内置(非正则表达式)函数可以实现我正在寻找的东西?

最佳答案

正如 Artelius 解释的那样,str_replace() 的最后一个参数由该函数设置。没有允许您限制替换次数的参数。

只有 preg_replace() 具有这样的参数:

echo preg_replace('/John/', 'dude', $string, $numberOfInstances);

这很简单,我建议使用它,因为与以下非正则表达式解决方案的单调乏味相比,它对性能的影响太小:

$len = strlen('John');

while ($numberOfInstances-- > 0 && ($pos = strpos($string, 'John')) !== false)
$string = substr_replace($string, 'dude', $pos, $len);

echo $string;

不过,您可以选择任一解决方案,两者都按您的预期工作。

关于php - 如何仅在 PHP 中使用 str_replace() 删除一定次数的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703737/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com