一个诡异的php查找字符串问题

阿采 发布于 2016/05/14 07:47
阅读 333
收藏 0
PHP
遇到一个奇怪的问题 下面两段代码,执行结果不同,不知道有没有人遇到过类似问题 代码一 $a=”hello world“; $isin = strstr($a,“world”);//此处为真 代码二 $a=$b;//b是用fget从文件中读到,用exploit分割 echo $a;//此处显示 hello world $isin = strstr($a,"world");//此处为假 为什么代码二$a,echo出来结果都和代码一的字符串一样,但是这个strstr结果却是假呢? 这问题昨天晚上搞了半天没研究出来,今天出游路上无法安心,手机打的,代码可能有格式错误,见谅。
加载中
1
南湖船老大
南湖船老大
你觉得代码1和代码2的字符串一样,我还觉得你眼拙瞎扯呢。。。你判断一下不就清楚了么,何必去猜呢
0
南湖船老大
南湖船老大
别闹。。。你不会用===来判断么。。。
0
yak
yak
出游也心系代码,这才是标准的码农
0
Conte
Conte
支持2L,直接比较判断。
0
梦想岛
梦想岛
strcmp 这个比较理想的
0
阿采
阿采
我要做的事是读取文件某行得到一个字符串,然后根据这个字符串去某个目录下查找以这个字符串结尾的文件。 我定义了一个函数getfilename($a),如果用代码一中的$a传入,到函数里能执行到strstr判断里,如果用代码二就走不进去。 在函数里用echo把传入参数打印出来看上去是一样的。 楼上指教用===,不知道何解?我不是要比较两个字符串是否一样,而是要找出为什么在用代码二的时候strstr为假
阿采
阿采
回复 @南湖船老大 : 现在不是判断相等还是不相等,而是不明白为什么在一个变量echo出来了是hello world,strstr这个变量world是假。在函数里hello world和world都是用变量解析字符串获得的。你所说的===如果是用来判断代码二中变量a是否等于常字符串helloworld没有意义,即使不等,我也需要知道为什么b不等,以为从echo结果看b确实是hello world
南湖船老大
南湖船老大
不相等当然不一样了
0
SVD
SVD
楼主首先不必对于PHP的解析存在疑惑,既然两种情况下的输出不是预期的那样,说明变量$b是有问题的, ​
<?php

	$a = " hello world" ;
	$isin = strstr($a,"world");
	echo $isin;
	/*$a = $b;
	echo $a;

	$isin = strstr($a,"world");*/

?>
阿采
阿采
回复 @SVD : $b echo出来就是hello world,我同时把代码一和代码二的$b echo出来,在同一个页面两行显示,上下对比看时一模一样的
SVD
SVD
回复 @阿采 : strstr的结果为假,说明在"hello world"中没有$b的部分.
SVD
SVD
回复 @阿采 : b是用fget从文件中读到,用explode分割 echo $a ? 楼主,这个$b 被echo出来是什么呢?
阿采
阿采
如果$b有问题,那在函数里不应该能echo出来才对阿
0
alexleft
alexleft

我要做的事是读取文件某行得到一个字符串,然后根据这个字符串去某个目录下查找以这个字符串结尾的文件。

这个算法里面还要去遍历目录啊?NFS和他的堂兄弟们表示无法蛋定。

阿采
阿采
是需要遍历的,但是这个应该和这个问题没关系吧,要遍历的目录和做遍历的服务端代码是在一个目录,和nfs有什么关系?如果有关系,那使用代码一却能得到正确结果是为什么呢?
0
Tuesday
Tuesday

strstr不是为搜索而出生的..... 


strstr是为了截取, 截断字符而生.


阿采
阿采
用strpos处理存在性判断,在结果应该是真的时候,strpos却是假,所以才改用strstr的
0
阿采
阿采
哎,回答的人很多,没有一个人答到点子阿,大家不要在技术问答贴里灌水呀,每次看到有回答的消息都很高兴,打开发现不是在质疑题主的智商就是在顾左右而言他
返回顶部
顶部