我试图从字符串中删除单词“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”,而不是仅执行两次并保留其他两个约翰。
就我的目的而言,替换发生的顺序并不重要,例如可以替换前两个实例,或者最后两个实例或组合,替换的顺序并不重要。
那么有没有一种方法可以以这种方式使用 str_replace() 或者是否有另一个内置(非正则表达式)函数可以实现我正在寻找的功能?
正如 Artelius 所解释的,最后一个参数str_replace()
由函数设置。没有任何参数可以让您限制替换数量。
Only 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;
不过,您可以选择任一解决方案,两者都可以按您的预期工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)