替换

str_replace — 子字符串替换(查找替换)
语法

mixed str_replace( mixed $search, mixed $replace, mixed $subject[, int &$count] )

描述
  • 该函数返回一个字符串或者数组
  • 该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果
  • 如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换preg_replace()
  • 如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。
  • 如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写
  • 如果 search 和 replace 都是数组,它们的值将会被依次处理
参数
参数 描述
search 查找的目标值,也就是 needle。一个数组可以指定多个目标
replace search 的替换值。一个数组可以被用来指定多重替换
subject 执行替换的数组或者字符串。也就是 haystack。如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组
count 如果被指定,它的值将被设置为替换发生的次数,也就是获取替换的个数
返回值
  • 该函数返回替换后的数组或者字符串
  • 只有当search为数组的时候,replace才能是数组,否则报错
举例
// 示例1-subject(字符串),search(字符串),replace(字符串),$replace可以设置为null,相当于''
$search = 'this';
$replace = 'that';
$string = 'this is an example this';
$result = str_replace($search,$replace,$string,$count);
echo $result.'</br>';
echo $count.'</br>';
// 结果
that is an example that
2
// 示例2-subject(字符串),search(数组),replace(字符串),则search中的所有元素都用replace替换
$search = ['this','is','example'];
$replace = 'that';
$string = 'this is an example this';
$result = str_replace($search,$replace,$string,$count);
echo $result.'</br>';
echo $count.'</br>';
// 结果
that that an that that
4
// 示例3-subject(字符串),search(数组),replace(数组),search数组和replace数组元素个数相同,则一一对应的替换
$search = ['this','is','an'];
$replace = ['one','two','three'];
$string = 'this is an example this';
$result = str_replace($search,$replace,$string,$count);
echo $result.'</br>';
echo $count.'</br>';
// 结果
one two three example one
4
// 示例4-subject(字符串),search(数组),replace(数组),search数组元素个数小于replace元素个数,则一一对应的替换,replace后面多余的无效
$search = ['this','is'];
$replace = ['one','two','three'];
$string = 'this is an example this';
$result = str_replace($search,$replace,$string,$count);
echo $result.'</br>';
echo $count.'</br>';
// 结果
one two an example one
3
// 示例5-subject(字符串),search(数组),replace(数组),search数组元素个数大于replace元素个数,则一一对应的替换,replace后面不够的用空字符串替代
$search = ['this','is','an'];
$replace = ['one','two'];
$string = 'this is an example this';
$result = str_replace($search,$replace,$string,$count);
echo $result.'</br>';
echo $count.'</br>';
// 结果
one two example one
4
// 示例6-subject(数组),search(字符串),replace(字符串),则search中的所有元素都用replace替换
$search = 'this';
$replace = 'one';
$array = ['this','is','an','example','this'];
$result = str_replace($search,$replace,$array,$count);
print_r($result);
echo $count;
// 结果
Array
(
    [0] => one
    [1] => is
    [2] => an
    [3] => example
    [4] => one
)
2
// 示例7-subject(数组),search(数组),replace(字符串),则search中的所有元素都用replace替换
$search = ['this','is'];
$replace = 'one';
$array = ['this','is','an','example','this'];
$result = str_replace($search,$replace,$array,$count);
print_r($result);
echo $count;
// 结果
Array
(
    [0] => one
    [1] => one
    [2] => an
    [3] => example
    [4] => one
)
3
// 示例8-subject(数组),search(数组),replace(数组),search数组和replace数组元素个数相同,则一一对应的替换
$search = ['this','is','an'];
$replace = ['one','two','three'];
$array = ['this','is','an','example','this'];
$result = str_replace($search,$replace,$array,$count);
print_r($result);
echo $count;
// 结果
Array
(
    [0] => one
    [1] => two
    [2] => three
    [3] => example
    [4] => one
)
4
// 示例9-subject(数组),search(数组),replace(数组),search数组元素个数小于replace元素个数,则一一对应的替换,replace后面多余的无效
$search = ['this','is'];
$replace = ['one','two','three'];
$array = ['this','is','an','example','this'];
$result = str_replace($search,$replace,$array,$count);
print_r($result);
echo $count;
// 结果
Array
(
    [0] => one
    [1] => two
    [2] => an
    [3] => example
    [4] => one
)
3
// 示例10-subject(数组),search(数组),replace(数组),search数组元素个数大于replace元素个数,则一一对应的替换,replace后面不够的用空字符串替代
$search = ['this','is','an'];
$replace = ['one','two'];
$array = ['this','is','an','example','this'];
$result = str_replace($search,$replace,$array,$count);
print_r($result);
echo $count;
// 结果
Array
(
    [0] => one
    [1] => two
    [2] => 
    [3] => example
    [4] => one
)
4

str_ireplace — str_replace() 的忽略大小写版本

preg_replace — 执行一个正则表达式的搜索和替换
语法

mixed preg_replace( mixed $pattern, mixed $replacement, mixed $subject[, int $limit = -1[, int &$count]] )

描述
  • 搜索subject中匹配pattern的部分,以replacement进行替换
参数
参数 描述
pattern 要搜索的模式。可以使一个字符串或字符串数组
replacement 用于替换的字符串或字符串数组,其替换规则与str_replace相同
subject 要进行搜索和替换的字符串或字符串数组。如果subject是一个数组,搜索和替换回在subject 的每一个元素上进行, 并且返回值也会是一个数组
limit 每个模式在每个subject上进行替换的最大次数。默认是 -1(无限)。
count 如果指定,将会被填充为完成的替换次数
参考链接 https://www.php.net/manual/zh/function.preg-replace.php
返回值
  • 如果subject是一个数组, preg_replace()返回一个数组,其他情况下返回一个字符串。
  • 如果匹配被查找到,替换后的subject被返回,其他情况下返回没有改变的 subject。如果发生错误,返回 NULL
举例
// 示例
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
// 结果
April1,2003

substr_replace — 替换字符串的子串(替换一段特定连续的字符串)
语法

mixed substr_replace( mixed $string, mixed $replacement, mixed $start[, mixed $length] )

描述
  • substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换
参数
参数 描述
string 输入元素
replacement 替换字符串
start 如果 start 为正数,替换将从 string 的 start 位置开始。 如果 start 为负数,替换将从 string 的倒数第 start 个位置开始
length 如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。当然,如果 length 为 0,那么这个函数的功能为将 replacement 插入到 string 的 start 位置处
返回值
  • 返回结果字符串。如果 string 是个数组,那么也将返回一个数组
  • 如果start游标移动的位置小于length的游标位置,则会在start处插入replace的值
举例
// 示例1-一般使用
$subject = 'this is an example';
$result = substr_replace($subject,'@',0,4);
echo $result;
// 结果
@ is an example
// 示例2-start为正数,length为负数
$subject = 'this is an example'; // 18个字符
$result = substr_replace($subject,'@',0,-20);
echo $result;
// 结果
@this is an example
// 示例3-start为负数,length为负数
$subject = 'this is an example'; // 18个字符
$result = substr_replace($subject,'@',-10,-8);
echo $result;
// 结果
this is @ example
// 示例4-start为负数,length为负数
$subject = 'this is an example'; // 18个字符
$result = substr_replace($subject,'@',-10,-20);
echo $result;
// 结果
this is @an example

strtr — 转换指定字符
语法
  • string strtr( string $str, string $from, string $to)
  • string strtr( string $str, array $replace_pairs)
描述
  • 该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符。
  • 如果 from 与 to 长度不相等,那么多余的字符部分将被忽略。 str 的长度将会和返回的值一样
参数
参数 描述
str 待转换的字符串
from 字符串中与将要被转换的目的字符 to 相对应的源字符
to 字符串中与将要被转换的字符 from 相对应的目的字符
replace_pairs 参数 replace_pairs 可以用来取代 to 和 from 参数,因为它是以 array('from' => 'to', ...) 格式出现的数组
返回值
  • 返回转换后的字符串
  • 如果 replace_pairs 中包含一个空字符串("")键,那么将返回 FALSE。
  • 注意,这里from和to都是字符,不是字符串
举例
// 示例1-使用from,to
$string = 'this is an example';
$result = strtr($string,'i','@');
echo $result;
// 结果
th@s @s an example
// 示例2-使用数组格式,可以同时转换多个字符
$string = 'this is an example';
$result = strtr($string,['i'=>'#','a'=>'b']);
echo $result;
// 结果
th#s #s bn exbmple

results matching ""

    No results matching ""