strpos疑问,php高手进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strpos疑问,php高手进相关的知识,希望对你有一定的参考价值。

主要是strpos的地方问题
我想做的循环截取开始结束部分的支付
这是我最后测试可以达到效果的:
while()
if(strpos($yuanma,$str1,$chaxunwz)!==false)

$pipeiwz=strpos($yuanma,$str1,$chaxunwz);
$chaxunwz=$pipeiwz+strlen($str1);
if($i==$biaojiks)$qiequks=$chaxunwz;
if($i==$biaojijs)$qiequjs=$pipeiwz;



达不到效果的,这个可能是无限循环了
while()
if(($pipeiwz=strpos($yuanma,$str1,$chaxunwz))!==false)这个语句好像总成立,无限循环了



是不是($pipeiwz=strpos($yuanma,$str1,$chaxunwz))!==false首先赋值给$pipeiwz,路过没有匹配,那$pipeiwz=false,应该不成立了,怎么这样的不行呢,我对语句的优先级不太熟悉
if(($pipeiwz=strpos($yuanma,$str1,$chaxunwz))>=0)总成立,谁能说下怎么回事呢

我用下面测试的表达式效果
$m=0;
if($m===false)echo 'm===false yes'; //全等,数值数据类型相等
else echo 'm===false no';//不成立

if($m==false)echo “m==false yes";//数值相等成立
else echo 'm==false no';
if(($pipeiwz=false)>=0)echo "pipeiwz=false大于0";//这个成立

这个($pipeiwz=strpos($yuanma,$str1,$chaxunwz))!==false

路过取到位置是0,但数据类型不同,用!=就会不满足出错,导致一个匹配也没有

但有时行有时有问题,浏览器都完了

你给我看看 while () 里的 表达式吧

($pipeiwz=strpos($yuanma,$str1,$chaxunwz))!==false 这句话 你说的正确
确实 是 先赋值给 $pipeiwz 我觉得不是 这个代码的问题吧。

------------------------------------------

if(($pipeiwz=strpos($yuanma,$str1,$chaxunwz))>=0)
这个 当然 总是成立的啊,

因为 strpos 找到了 返回值肯定是 >=0

如果没找到 就是 false

false >=0 是 成立的 因为 false == 0 就成立!

--------------------

if($pipeiwz=strpos($yuanma,$str1,$chaxunwz))!==false) 看这个情况下
这个判断的是 如果有匹配 就成立 没有匹配就 不成立!
参考技术A !==false
改为true看....
参考技术B 你都没有说清楚,while()这里要加条件了,不然if里要加个退出循环的语句,不然就死循环了。暂时只看出这么多 参考技术C 你的用法是没错的。但是我不清楚你的思路是什么,我们也看不到你的while循环到底是怎么样的,首先你要确定while不是死循环。
另外,
if(strpos($yuanma,$str1,$chaxunwz)!==false){
这里面是找到了需要的字符串后的执行的操作;

你要清楚strpos函数的用法:现在你就是想在 $yuanma 这个字符串中从 $chaxunwz 这个位置向后找 $str1 这个字符串
参考技术D 在 $yuanma 这个字符串中从 $chaxunwz 这个位置

php strpos 的注意事项,遇到的坑

######strpos()函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。

strpos(string,find,start)

参数 描述

string 必需。规定被搜索的字符串 必须是字符

find 必需。规定要查找的字符。find 必须是字符。否则查不到。。靠。。

var_dump(strpos(',1828,','1828')); //int 1

var_dump(strpos(777182877,1828));  //bool(false) 本以为可以找到呢

var_dump(strpos(',1828,',1828));             //bool(false) 本以为可以找到呢

还有返回0,也是找到了。要注意。

总结:

1.注意参数位置 先haystack

2.区分大小写。

3.返回 注意0

4.注意全用字符串

以上是关于strpos疑问,php高手进的主要内容,如果未能解决你的问题,请参考以下文章

linux shell遇到一些疑问 请高手解答

Linux虚拟机磁盘使用情况疑问,请高手解答!

PHP操作Mysql疑问?

有关MD5与PHP,高手进

协变和逆变之疑问

关于叛逆的疑问和感想