当前位置: 代码迷 >> 综合 >> strpos 函数的特性
  详细解决方案

strpos 函数的特性

热度:6   发布时间:2023-11-26 21:17:37.0

第一次用这个函数时,我相信肯定会有小白,踩这个坑。

为了更好的展现PHP的宗旨、理念,博主追求的目标:我为人人,人人为我,美美与共,天下大同。

大家都知道,世界上最好的语言----php,是弱类型语言。

大家都知道,一个  =        是赋值

                    两个  ==     是比较数值

                    三个  ===  是比较数值 并且  比较类型

0,false , null ,"",''

代码如下:

if(strpos('http://www.csdn.net/img/base64/1.jpg','http://') != false ){
echo 1;
}

这篇博文,废话较多,读者可以跳跃查看关键内容即可,不必字字必阅。

上边代码会输出 1 嘛。显然,并不会,为什么呢。因为在第一个字节就搜到了  http://   返回的是  0,

这个函数如果没有搜索到,那么他将返回  false。

上边代码的故事背景是:在项目中,前端才有插件裁剪了图片,给我传递的是base64,我后端需要上传到 oss,

然后oss,返回给我的url。

但是用户在修改图片的时候,多张图片,有的修改了,此时的值就又变为了 base64,有的没有修改,就还是我上传的路径,返回给的前台。

$iamge = array(

'image_a'=>'base64://image/jpg,gdbfsgbfgdfgbdbgdgb....',

'image_b'=>'http://www.csdn.net/img/base64/1.jpg',

'image_c'=>'http://www.csdn.net/img/base64/2.jpg',

'image_d'=>'base64://image/jpg,gdbfsgbfgdfgbdbgdgb....',

)

如上数组,用户修改了两张照片,此时,前台给我把数据传了过来。

我没有判断 这条数据是上传过,还是没有上传过,就全部的再次遍历上传到云服务器

此时,问题出现,中间的两张,因为成为了 字符串。所以,此时中间的两张,找不到了。

这就是,故事背景。

也阐述了,这个函数的特性。

所以,代码应该该为

if(strpos('http://www.csdn.net/img/base64/1.jpg','http://') !== false ){
echo 1;
}
完(end)

我为人人,人人为我,美美与共,天下大同。

程序人生在延续,故事随岁月而积累...........