2016-08-01 7 views
0

ich einen einfachen Code, der nicht richtig funktioniert, ich habe eine Datei wie folgt:Wo der Fehler dieses Codes

David 
Jordan 
Steve 

& in einem einfachen PHP-Code:

$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; 
} 

aber richtig dieser Code funktioniert nicht, wenn

$string = 'Hi , I\'M David'; 

Es ist falsch zurück, aber wenn $ string Änderung :

$string = 'Hi , I\'M Steve'; 

Es gibt True zurück!

Antwort

1

schließlich finde ich drei Möglichkeiten, dies zu beheben.
Weg 1 => verwenden rtrim Funktion:

$array[]=rtrim($file->fgets()); 

Weg 2 => Verwendung str_replace Funktion:

$array=str_replace("\r\n","",$array); 

oder

$array[]=str_replace("\r\n","",$file->fgets()); 

Weg 3 => Verwendung Dateifunktion:

$array = file("file.txt", FILE_IGNORE_NEW_LINES); 
0

Die Ausgabe der Funktion $ file-> fgets() enthält am Ende das Zeilenendezeichen \ n. Deshalb gibt die Funktion strpos() false zurück.

Sie müssen das Newline-Zeichen von der Funktion fgets() löschen, indem Sie die Funktion trim() verwenden.

Verwandte Themen