Diciamo che ho un file chiamato foo.txt codificato in utf8:Utilizzo di file e utf8 in PHP
aoeu
qjkx
ñpyf
e voglio ottenere un array che contiene tutte le righe in quel file (una riga per indice) che hanno le lettere aoeuñpyf e solo le righe con queste lettere.
ho scritto il seguente codice (codificato anche come utf8):
$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);
Tuttavia, dopo che la matrice $lines
ha solo la linea aoeu in esso.
Questo sembra essere perché in qualche modo, il "ñ" in $allowed_letters
non è lo stesso di "ñ" in foo.txt.
Anche se stampo un "ñ" del file, viene visualizzato un punto interrogativo, ma se lo stampo come questo print "ñ";
, funziona.
Come posso farlo funzionare?
Probabilmente i vostri s "N" non sono uguali: uno è un simbolo singolo "N" e un altro è [combinato da due caratteri] (http://en.wikipedia.org/wiki/Unicode#Combining_characters). –
No, non è così. Le tastiere spagnole hanno una chiave ñ e scrive un singolo carattere. –