我有一个简单的代码无法正常工作,我有一个这样的文件:
David
Jordan
Steve
&安培;在一个简单的PHP代码中:
$file = new SplFileObject("file.txt");
while (!$file->eof()) {
$array[]=$file->fgets();
}
$string = 'Hi , I\'M David';
if(strposa($string, $array)){
echo 'true';
} else {
echo 'false';
}
function strposa($haystack, $needle, $offset=0) {
if(!is_array($needle)) $needle = array($needle);
foreach($needle as $query) {
if(strpos($haystack, $query, $offset) !== false) return true; // stop on first true result
}
return false;
}
但此代码无法正常工作, 如果
$string = 'Hi , I\'M David';
返回false,但$ string更改为:
$string = 'Hi , I\'M Steve';
它返回True!
答案 0 :(得分:1)
最后,我找到了解决这个问题的三种方法 方式1 =>使用rtrim函数:
$array[]=rtrim($file->fgets());
方式2 =>使用str_replace函数:
$array=str_replace("\r\n","",$array);
或
$array[]=str_replace("\r\n","",$file->fgets());
方式3 =>使用文件功能:
$array = file("file.txt", FILE_IGNORE_NEW_LINES);
答案 1 :(得分:0)
$ file-> fgets()函数的输出最后会包含换行符\ n。这就是strpos()函数返回false的原因。
您必须使用trim()函数清除fgets()函数中的换行符。