当前位置: 首页 > 面试题库 >

使用str_replace使其仅作用于第一个匹配项?

明星剑
2023-03-14
问题内容

我想的一个版本str_replace()是只替换第一次出现$search$subject。是否有一个简单的解决方案,还是我需要一个hacky解决方案?


问题答案:

可以用preg_replace完成:

function str_replace_first($from, $to, $content)
{
    $from = '/'.preg_quote($from, '/').'/';

    return preg_replace($from, $to, $content, 1);
}

echo str_replace_first('abc', '123', 'abcdef abcdef abcdef'); 
// outputs '123def abcdef abcdef'

不可思议的地方是可选的第四个参数[Limit]。从文档中:

[限制]-每个主题字符串中每个模式的最大可能替换量。默认为-1(无限制)。



 类似资料:
  • 问题内容: 我有一个字符串,其结构类似于:。每次来自外部源的字符串都可能有所不同。 我只想替换第一次出现的而不是其他的。可能吗? 问题答案: preg_replace的可选第四个参数是:

  • 问题内容: 我正在尝试匹配模式: 以下仅匹配第一次出现的情况: 结果是: 但是,[使用pythex似乎可以正常工作](http://pythex.org/?regex=%3C–(%5B%5Cw%5Cs%5D%2B)–%3E(%5B%5Cs%5CS%5D*%3F)(%3F%3D%5Cn%3C–%7C%24)&test_string=%3C–%20Option%201%20–%3E%0ANice%20

  • 问题内容: 我很难理解什么时候会更合适,反之亦然。尽管替换子字符串的顺序颠倒了,但使用这两个函数似乎都可能获得完全相同的结果。例如: 这个输出 除了语法之外,使用一种语法还有什么好处?在任何情况下都不足以达到预期的结果吗? 问题答案: 第一个区别: 之间不同的行为的一个有趣的例子,并在PHP手册的注释部分: 结果是:“ ZDDB” 但是,此返回:“ ZDDD”(因为根据我们的数组,B = D) 要

  • 我的目标概述 为了实现这一点,我生成了以下代码 不幸的是,结果的dataframe,My.df2看起来与My.df完全相同,并且没有发生字符替换。但不会返回任何错误。 我以以下方式测试了str_replace_all()方法,它在一个向量上起作用。我想,在mutate(cross())函数中解释str_replace_all()的方式中,我遗漏了/不理解一些东西。 我已经想不出什么可能不起作用了。

  • 问题内容: 这是我的桌子: 然后,出于某种目的,我运行sql更新表t1中的日期: 现在,查看更改: 我不知道为什么匹配的行数为1,并且很难理解t1的列的值是id = 1而不是3的值2。当它与第一行匹配时,更新停止了吗?我认为在这种情况下,它将在t1和t2之间进行完整的数据匹配。任何帮助表示赞赏! 更新 谢谢,这是我正在认真处理的情况: 对于t2中的值,将它们用’,’分隔,并通过每个id合并到表t1

  • 我想用正则表达式解析一个字符串,字符串的例子是 罗得:他说:你不能通过 我想将作为一个组捕获,并且。然而,当我使用我的模式时,它返回 和 他说:你不应该使用正则表达式传递吗?