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

2024-05-24

我试图从字符串中删除单词“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(使用前将#替换为@)

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

随机推荐

  • 如何从循环内的字符串中删除最后一个字符

    我正在尝试在 xml 中的一行中打印所选的不同类别 喜欢
  • webstorm 无法识别“require”关键字

    我在用着WebStorm作为IDE 这是我的文件夹结构和安装的express js 但我的示例代码不知道require关键词 var express require express var app express app listen 13
  • 当“开始”一项活动时,“总时间”是什么意思?

    我发起一个活动使用 am start W n 控制台输出 tangbincheng tangbinchengdeMacBook Pro adb shell shell hwp6 t00 su root hwp6 t00 am start W
  • Flutter包读取自己的资产

    我有一个带有 assets 文件夹的模块 该文件夹与我的 pubspec yaml 文件位于同一目录中 在我的资产文件夹中 有 test txt 和 simpleObject json flutter assets assets test
  • 在 php unlink 中使用通配符

    我目前正在制作一个 php 脚本来绘制数据库中的一堆数据 将其排列到文本文件中 然后运行 GNUPlot 脚本来生成图表 我已经完成了所有这些工作 现在我需要做的就是删除我不再需要的文本文件 我一直在尝试的内容是从不同论坛上的另一个帖子中获
  • 选择列表;这与我的 sql 中的 DISTINCT 不兼容

    CREATE DEFINER root localhost PROCEDURE GetAllEventIdList SP in skillId varchar 50 in offsetvalue int in recordlimit int
  • 使用 CSS 在 javaFX 中设置按钮样式

    我在使用 CSS 的 javaFX 中设置按钮样式时遇到问题 我使用 Intellij Idea IDE 我有 CSS css 文件 Button fx padding 8 15 15 15 fx background insets 0 0
  • 如何在 Windows 上应用差异补丁?

    有很多程序可以创建差异补丁 但我在尝试应用一个程序时遇到了很大的困难 我正在尝试分发补丁 但用户向我询问了如何应用该补丁 于是我尝试自己弄清楚 结果发现我毫无头绪 而且我能找到的大多数工具都是命令行的 我可以处理命令行 但是如果没有一个漂亮
  • IIS Express 安装目录在哪里?

    我最近开始了一个 ASP NET 教程 我想测试我用 WebMatrix 制作的页面 然而 有一个错误 Web 服务器配置为不列出该目录的内容 因此 它建议启用目录浏览并转到 IIS Express 安装目录并运行命令 那么它到底位于哪里呢
  • 将加载 gif 添加到简单脚本中

    我对 Javascript 真的很陌生 但我已经有了这个加载 url 内容的脚本 一切都工作正常 我使用按钮上的 onClick 方法调用 plannerSpin 函数 但是当这一切发生时 我将如何显示动画 gif var xmlHttp
  • 多行编辑文本和编辑文本的首字母大写

    你好 我正在尝试做EditText多行和第一个字母应该输入为大写 我正在使用android inputType textCapSentences 但设置为输入类型后textCapSentences它将第一个字母设置为大写但是EditText
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • 在reactjs中发生状态改变后调用函数

    我的问题是这样的 我有两个组件 第一个组件是图像裁剪器 第二个组件是我应该显示裁剪图像的组件 我面临的问题是我可以将裁剪后的图像传递到第二个组件 但我必须按下裁剪图像并传递到第二个组件的按钮两次 在第二次单击时 只有我的图像传递到第二个组件
  • 使用什么工具来可视化逻辑和物理查询计划?

    我很熟悉explain 还有 WebUI 我很好奇是否有任何工具可以生成优化前后逻辑 物理计划的树结构图像 也就是返回的信息explain 作为图像 PNG 或 JPG 之类的图片 我自己从未听说过 但您可以使用 Web UI 查看物理计划
  • 从另一个线程调用 show 后 Windows 窗体窗体挂起

    我的应用程序有一些异步运行的网络代码 我附加了一些在没有连接到服务器时抛出的事件 并且在发生这种情况时我正在创建一些 操作失败 表单 问题是我的表单在创建后挂起 我读到了相关内容 并尝试这样做 public void ShowView if
  • Pandas date_range 为六个月值

    我正在尝试创建一个日期范围 该范围从特定日期开始以六个月为增量 因此 如果 end date 是 2020 01 15 那么在此之前的日期将是 2019 07 15 然后是 2019 01 15 依此类推 pandas 接受 6M 作为 d
  • 无法在java中同时打印字符串和布尔值

    public class Main public static void main String args final String man1 All man are created equal 27 final String man2 A
  • 使用 SOA、UoW、Repository、DataContext 和多个数据库设计多租户应用程序

    首先 我对这篇文章的篇幅表示歉意 但我想提供尽可能多的细节 以增加得到答案的机会 提前致谢 我正在向集成来自多个数据库的数据的现有应用程序添加新功能 简而言之 它允许客户和 或其会计师访问和更新有关其位置的财务信息 该应用程序有 3 层 其
  • 使用 npm 安装 JS 包并使用 webpack laravel mix 进行编译

    我是 Laravel 新手 正在关注 Laravel 5 4 的 Laracast 教程我了解了 Laravel mix 以及如何使用 Webpack Laravel Mix 工具编译我们的资源 所以我尝试添加一个 JavaScript 包
  • 如何仅在 PHP 中使用 str_replace() 删除文本一定次数?

    我试图从字符串中删除单词 John 一定次数 我在 php 手册上读到 str replace 除了第四个参数 count 所以我想可以用来指定应该删除多少个搜索实例 但事实似乎并非如此 因为以下情况 string Hello John h