Lets sagen, ich habe eine Datei namens foo.txt codiert in UTF-8: in dieser Datei (eine ZeileArbeiten mit Dateien und UTF-8 in PHP
aoeu
qjkx
ñpyf
Und ich möchte ein Array erhalten, die die Linien alle enthält pro Index), die die Buchstaben aoeuñpyf haben, und nur die Zeilen mit diesen Buchstaben.
Ich schrieb 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 danach, die $lines
Array hat genau die aoeu Linie darin.
Das scheint zu sein, weil irgendwie das "ñ" in $allowed_letters
nicht dasselbe ist wie das "ñ" in foo.txt.
Auch wenn ich ein "ñ" der Datei drucke, erscheint ein Fragezeichen, aber wenn ich es so print "ñ";
drucke, funktioniert es.
Wie kann ich es funktionieren lassen?
Wahrscheinlich Ihre „ñ“ s nicht gleich sind: Die eine ist ein einziges „ñ“ Symbol und ein anderer ist [aus zwei Zeichen kombiniert] (http://en.wikipedia.org/wiki/Unicode#Combining_characters). –
Nein, das ist nicht der Fall. Spanische Tastaturen haben einen ñ-Schlüssel und schreiben ein einzelnes Zeichen. –