Arbeiten mit Dateien und utf-8 in PHP

Können sagen, ich habe eine Datei namens foo.txt in utf8 kodiert:

aoeu  
qjkx
ñpyf

Und ich möchte ein array mit allen Zeilen in der Datei (eine Zeile pro index), die die Buchstaben aoeuñpyf, und nur die Zeilen mit diesen Buchstaben.

Schrieb ich den folgenden code (auch als utf8 codiert):

$allowed_letters=array("a","o","e","u","ñ","p","y","f");

$lines=array();
$f=fopen("foo.txt","r");
while(!feof($f)){
    $line=fgets($f);
    foreach(preg_split("//",$line,-1,PREG_SPLIT_NO_EMPTY) as $letter){
        if(!in_array($letter,$allowed_letters)){
            $line="";
        }
    }
    if($line!=""){
        $lines[]=$line;
    }
}
fclose($f);

Jedoch nach, dass die $lines array hat nur die aoeu Zeile.

Das scheint da irgendwie das "ñ" in $allowed_letters ist nicht das gleiche wie das "ñ" in foo.txt.

Auch wenn ich mit print ein "ñ" der Datei, wird ein Fragezeichen angezeigt, aber wenn ich es drucken, wie dies print "ñ"; es funktioniert.

Wie kann ich machen, damit es funktioniert?

  • Wahrscheinlich ist dein "ñ"s sind nicht gleich: die eine ist eine single "ñ" - symbol und das andere ist Kombination von zwei Zeichen.
  • Nein, das ist nicht der Fall. Spanische Tastaturen haben eine ñ-Taste, und es schreibt ein einzelnes Zeichen.
Schreibe einen Kommentar