宝哥软件园

PHP使用数组依次替换字符串中的匹配项

编辑:宝哥软件园 来源:互联网 时间:2021-09-18

让我们先看一条sql语句:

从表中选择*其中ctime='[date-14]'和ctime='[date-1]';我想用下面数组(' 2015-07-01 ',' 2015-07-15 ')中的元素替换上面sql语句中括号中指示的日期;

使用常规匹配:找到第一个括号,用第一个元素替换,然后找到第二个并替换。

使用sprintf函数:因为日期已经计算好了,就按顺序替换。

因为markdown写正规比较麻烦,我就直接把图片放在这里了。

Ps:设想一下,如果sql中只有一个时间条件需要替换,那么就需要修改为。

$sql=sprintf($sql,$arr[0])说白了,如果sprintf函数支持数组作为第二个参数就好了。查了一下,确实有解决办法:

call_user_func_array()的官方解释是:

call _ user _ func _ array—调用回调函数,并将一个数组参数作为回调函数的参数。

Mixedcall _ user _ func _ array(可调用$ callback,array $ param_arr)调用第一个参数作为回调函数,并将参数数组作为param_arr作为回调函数的参数传入。

也就是说,的第一个参数是你要使用的函数的名称(上一篇文章中的sprintf),第二个参数是要使用的函数的参数,只不过参数是以数组的形式传递给call _ user _ func _ arrayok,这样就可以实现动态替换。

$ param=$ arrarray_unshift($param,$ SQL);$ SQL=call _ user _ func _ array(' sprint f ',$ param);接下来介绍str _ replace-子串替换和数组替换。

解释

混合str _ replace(混合$ search,混合$ replace,混合$ subject [,int $ count])。该函数返回一个字符串或数组。此字符串或数组是用替换替换主题中所有搜索的结果。

如果有一些特殊的替换要求(比如正则表达式),应该使用这个函数来替换ereg_replace()和preg_replace()。

参数

如果搜索和替换是数组,str_replace()将映射和替换主题。如果替换的值的数量小于搜索的数量,将使用空字符串进行冗余替换。如果搜索是一个数组,替换是一个字符串,则搜索中每个元素的替换将始终使用该字符串。转换不会改变大小写。如果搜索和替换都是数组,它们的值将依次处理。

搜索

求的目标值,也就是针。一个数组可以指定多个目标。

替换

搜索的替换值。一个数组可以用来指定多个替换。

科目

要替换的数组或字符串。那是干草堆。

如果主题是数组,替换操作将遍历整个主题,返回值将是数组。

数数

注:如果指定,将控制匹配和替换的数量。

返回值

此函数返回替换后的数组或字符串。

特征

5.0.0添加计数参数。

4.3.3功能行为变化。旧版中有一个BUG ——。当搜索和替换参数都是数组时,空的搜索索引将被跳过,但替换的内部指针不会同时向前移动。PHP中出现了错误。

4.3.3.任何依赖于这个BUG的脚本都应该先去掉空的搜索值,这样才能模拟原来的行为。

4.0.5大多数参数可以是数组。

模型

示例#1 str_replace()基本示例。

?php/赋值:正文文本=' black ' $ body tag=str _ replace(' % body % ',' black ',' body text=' % body % ');//赋值: Hll Wrld f PHP $元音=数组(“A”,“E”,“I”,“O”,“U”,“A”,“E”,“I”,“O”,“U”);仅美元辅音=str _ replace($元音、'、'你好PHP的世界');//赋值:你应该每天吃披萨、啤酒和冰淇淋$短语='你应该每天吃水果、蔬菜和纤维;$ health=array('水果'、'蔬菜'、'纤维');$ yummy=array('披萨'、'啤酒'、'冰淇淋');新美元短语=str _ replace($ health,$yummy,$短语);//赋值: 2$str=str_replace('ll ',',good golly Molly小姐!$ count);回声$计数?示例2可能的str_replace()替换范例

?php/替换顺序$str='第一行n第2行r第3行 r 第四行 n ';$order=array('rn ',' n ',' r ');$ replace=' br/';//首先替换rn字符,因此它们不会被两次转换$newstr=str_replace($order,$replace,$ str);//输出f、因为A被B替换,B又被C替换,以此类推.//由于从左到右依次替换,最终E被F替换$search=array('A ',' B ',' C ',' D ',' E ');$replace=数组(‘B’、‘C’、‘D’、‘E’、‘F’);$ subject=' Aecho str _ replace($ search,$replace,$ subject);//输出:阿帕帕尔梨/由于上面提到的原因$letters=array('a ',' p ');$水果=数组('苹果','梨');$ text=' a p $ output=str _ replace($ letters,$水果,$ text);回声$输出;注释

注释:此函数可安全用于二进制对象。

警告

了解替换顺序

由于str_replace()的替换时从左到右依次进行的,进行多重替换的时候可能会替换掉之前插入的值。参见该文档的范例。

注释:

该函数区分大小写。使用str_ireplace()可以进行不区分大小写的替换。

更多资讯
游戏推荐
更多+