用 PHP 替换第一次出现的字符串

在 PHP 中,有时我们可能想要替换字符串的第一次出现。
为此,我们可以使用 preg_replace 函数进行正则表达式替换;然而,由于转义反斜杠的困难,使用 substr_replace 更安全,并且当我们只需要进行直接替换而不需要 RegEx 功能时,它也更有用。

建议使用 substr_replace 进行简单的插入式替换。
为此,我们可以创建自己的函数,可以在任何需要的地方使用。
下面的函数将在成功时返回修改后的字符串,在失败时返回原始字符串:

function replace_first_str($search_str, $replacement_str, $src_str){
  return (false !== ($pos = strpos($src_str, $search_str))) ? substr_replace($src_str, $replacement_str, $pos, strlen($search_str)) : $src_str;
}

用法:

$src_str = 'one, one, zero';
echo replace_first_str('one', 'two', $src_str);

输出:

two, one, zero

用 preg_replace 替换第一次出现字符串

preg_replace 函数允许我们在字符串内部执行基于正则表达式的搜索和替换。
该函数接受 5 个参数,如下所列:

  • Pattern
  • Replacement
  • Subject
  • Limit
  • Count

第一个参数,要匹配的模式

第二个是替换字符串。

第三个是主题,(也就是要搜索的源字符串)。

第四个参数称为限制参数,我们可以使用它来限制执行的替换次数。

最后一个参数称为计数参数,包含替换次数。
这与本教程无关,因为我们只会替换字符串中的第一次出现。

以下是如何替换字符串中第一个匹配项的简单示例:abcde:

$Replacement = 'edcba';
$Source = '1234 abcdefg 1234 abcdefg 1234 abcdefg';
echo preg_replace('/abcde/', $Replacement, $Source, 1);

limit 参数使函数只替换第一个匹配项——值 2 将替换前两个,3 替换前三个,依此类推。

日期:2020-06-02 22:17:14 来源:oir作者:oir