php字符串替换函数strtr(),str_replace(),substr_replace(),preg_replace()介绍
strtr()
定义:转换字符串中特定的字符。
返回值:返回已转换的字符,如果 array 参数包含一个空字符串("")的键名,则将返回 FALSE。
语法:strtr(string,from,to)或者strtr(string,array)。
string(必):规定要转换的字符串。
from(必):(除非使用数组)。规定要改变的字符。
to(必):(除非使用数组)。规定要改变为的字符。
array(必):(除非使用 from 和 to)。数组,其中的键名是更改的原始字符,键值是更改的目标字符。
示例1:strtr("Hilla Warld","ia","eo"); //把字符串中的字符 "ia" 替换为 "eo";输出“Hello World”。
示例2:$arr = array("Hello" => "Hi", "world" => "earth");echo strtr("Hello world",$arr);
注释:如果 from 和 to 参数的长度不同,则会被格式化为最短的长度,中文支持不好。
str_replace()
定义:以其他字符替换字符串中的一些字符(区分大小写)。
返回值:返回带有替换值的字符串或数组。
语法:str_replace(find,replace,string,count)
find(必):规定要查找的值。
replace(必):规定替换 find 中的值的值。
string(必):规定被搜索的字符串。
count(选):对替换数进行计数的变量。
示例1:
<?php
$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr,$i));
echo "替换数:$i";
//Array ( [0] => blue [1] => pink [2] => green [3] => yellow ) 替换数:1
?>
示例2:
<?php
$find = array("Hello","world");
$replace = array("B");
$arr = array("Hello","world","!");
print_r(str_replace($find,$replace,$arr));
//Array ( [0] => B [1] => [2] => ! )
?>
规则:
1、如果搜索的字符串是数组,那么它将返回数组。
2、如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
3、如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
4、如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
注释:该函数是二进制安全的,该函数区分大小写。str_ireplace() 函数执行不区分大小写。
相关:str_ireplace不区分大小写
substr_replace()
定义:把字符串的一部分替换为另一个字符串。
返回值:返回被替换的字符串。如果 string 是数组,则返回数组。
语法:substr_replace(string,replacement,start,length)
string(必):规定要检查的字符串。
replacement (必):规定要插入的字符串。
start(必):规定在字符串的何处开始替换。正数在字符串中的指定位置开始替换,负数在从字符串结尾的指定位置开始替换
length(必):规定要替换多少个字符。默认是与字符串长度相同。正数被替换的字符串长度,负数表示待替换的子字符串结尾处距离string 末端的字符个数,0插入而非替换
注释:如果 start 参数是负数且 length 小于或者等于 start,则 length 为 0。
示例1:echo substr_replace("Hello world","Shanghai",6); // Hello Shanghai
示例2:echo substr_replace("I love Shanghai Shanghai!",'abc',0,6) ; // abc Shanghai Shanghai!
preg_replace()
定义:函数执行一个正则表达式的搜索和替换。
语法:preg_replace (string, replace, find, limit, count)
string(必):要搜索的模式,可以是字符串或一个字符串数组。
replace(必):用于替换的字符串或字符串数组。
find(必): 要搜索替换的目标字符串或字符串数组。
limit(选):对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
count(选):为替换执行的次数。
示例1:
<?php
$string = 'google 123, 456';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'runoob ${2},$3';
echo preg_replace($pattern, $replacement, $string);
?>
// runoob 123,456
示例2(删除空格字符):
示例2(删除空格字符):
<?php
$str = 'runo o b';
$str = preg_replace('/\s+/', '', $str);
// 将会改变为'runoob'
echo $str;
?>
//runoob
性能从高到低:
strtr() ,str_replace(),substr_replace(),preg_replace()