2011-12-23 5 views
0

テキストファイルを読み込んで内容を取得する必要があり、この部分は成功です。Ä、å、àなどの拡張ASCII文字のみをフィルタリングする必要があります

$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents); 

これは

どう

すべての拡張ASCII文字プラスなどアポストロフィ、引用符、として必要な文字を消去します:問題は、いくつかの拡張ACII文字で構成され、私はそれらの文字をフィルタリングするために、以下を使用したコンテンツでありますこれを行うにはpreg_replaceを変更する必要がありますか?

+0

あなたが投稿したことは引用符とアポストロフィが削除されません。編集中のテキストをいくつか含めることができますか? –

+0

例:学校に行く。 "あなたは学校に行くだろう" –

+0

"あなたは学校に行く"という意味ではありませんか?それは私のために働いています。あなたは "アポストロフィー"がアポストロフィのような他の文字ではないと確信していますか? –

答えて

1

問題は、フィルタリング対象の範囲にないascii 'または"ではありません。問題は、Windowsスマート引用符である可能性が最も高いです。あなたが交換し、あなたがより多くの喜びがあるでしょうを実行する前に、それらをフィルター;)

例えば、taken from this link

<?php 

function convert_smart_quotes($string) 
{ 
    $search = array(chr(145), 
        chr(146), 
        chr(147), 
        chr(148), 
        chr(151)); 

    $replace = array("'", 
        "'", 
        '"', 
        '"', 
        '-'); 

    return str_replace($search, $replace, $string); 
} 

$contents = convert_smart_quotes($contents); 
$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents); 
var_dump($contents); 

?> 
+0

私は最初に次の2行を与えてから、preg_replaceをASCIIに渡すと、コンテンツは完全に正しくなりますが、1000個のテキストファイルがあり、他のテキストファイルが同じであることを確認できません。 –

+0

$ contents = str_replace( ''、 "’"、$ contents); $ contents = str_replace( ''、 "–"、$ contents); $ contents = preg_replace( '/ [^(\ x20- \ x7F)] * /'、 ''、$ contents); –

+0

皆様おかげさまで本当にありがとうございます!問題はすべて私のテキストファイルがUnicodeであったのですが、一度utf-8に変換すれば、拡張ASCII文字は得られませんでした。 –

関連する問題