HOWTO · PHP
在 PHP 中替换字符串
本文介绍了如何在 PHP 中替换部分字符串。它包括 str_replace()函数。
本页内容
在 PHP 字符串中替换部分内容,可以使用 str_replace()。它会查找字面文本,并返回已将匹配内容替换后的主体。它适用于普通文本转换,但不会验证或清理不可信输入。
在 PHP 字符串中使用 str_replace() 替换文本
该函数接收要查找的文本、替换内容,以及要搜索的字符串或数组。它按字面内容匹配:例如,美元符号也只是要查找的普通字符。在 PHP 双引号字符串中,写作 \"$\" 时要小心,因为 $ 会开始变量插值;单引号字符串(例如 '$')则可直接表示字面的美元符号。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
<?php
$subject = 'Hello World!';
echo str_replace('World', 'PHP', $subject) . PHP_EOL;
Hello PHP!
PHP_EOL 会使用平台的行分隔符结束显示的这一行。
若要替换美元符号,请将 '$' 作为查找值,并将类似 'USD ' 的字符串作为替换内容。函数本身不要求对 $ 进行特殊转义;它的值由 PHP 字符串字面量的引号规则决定。
了解参数、返回值和替换次数
$search、$replace 和 $subject 是必需参数。$search 是要查找的字面文本,$replace 是用于替换它的文本,$subject 则是要处理的字符串或字符串数组。当主体是字符串时,函数返回修改后的字符串;当主体是数组时,则返回由修改后字符串组成的数组。如果没有匹配项,主体保持不变。
第四个参数 $count 是可选的,并通过引用传递。PHP 会将主体中执行的替换总次数写入该参数;需要此计数时,请先初始化变量再传入。这个计数是函数调用的输出,不是替换次数上限。
例如,str_replace('cat', 'dog', 'cat and cat', $count) 会返回 dog and dog,并将 $count 设为 2。这是语法示例,并非声称已执行的输出。
使用数组替换多个值
将数组传给 $search 和 $replace,即可在一次调用中执行对应的替换。每个查找值会与同一位置上的替换值配对。例如,下面的表达式会同时替换句子中的两个词:
str_replace(['PHP', 'great'], ['Python', 'useful'], 'PHP is great')
它会返回 Python is useful。PHP 会按顺序应用数组中的配对,因此某次替换可能引入文本,随后又被后续的查找值匹配。如果每次替换都应只依据原始文本进行,请避免使用会相互重叠的配对,或改用专为该输入格式设计的解析器。
处理区分大小写和不区分大小写的匹配
str_replace() 会区分字母大小写:查找 'world' 不会匹配 'World'。如果查找时应忽略大小写,请使用 str_ireplace()。例如,str_ireplace('world', 'PHP', 'Hello World!') 会返回 Hello PHP!。只有在确实需要这种行为时,才选择不区分大小写的函数,因为它也可能替换大小写不同的匹配项。