phép nói rằng tôi có một tập tin gọi là foo.txt mã hóa trong utf8:Làm việc với tập tin và utf8 trong PHP
aoeu
qjkx
ñpyf
Và tôi muốn để có được một mảng chứa tất cả các dòng trong tập tin đó (một dòng cho mỗi chỉ số) có các chữ cái aoeuñpyf, và chỉ có các dòng với các chữ cái này.
tôi đã viết đoạn mã sau (cũng được mã hóa như là 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);
Tuy nhiên, sau đó, các mảng $lines
chỉ có dòng aoeu trong đó.
Điều này có vẻ là bởi vì bằng cách nào đó, "ñ" trong $allowed_letters
không giống với "ñ" trong foo.txt.
Ngoài ra nếu tôi in một "ñ" của tệp, dấu chấm hỏi xuất hiện, nhưng nếu tôi in nó như thế này print "ñ";
, nó hoạt động.
Tôi làm cách nào để hoạt động?
Có thể các chữ "ñ" của bạn không bằng nhau: một là ký hiệu "ñ" và một ký tự khác [được kết hợp từ hai ký tự] (http://en.wikipedia.org/wiki/Unicode#Combining_characters). –
Không, đó không phải là trường hợp. Bàn phím tiếng Tây Ban Nha có phím số và nó viết một ký tự đơn. –