私は「 Simple HTML DOM 」
に基づくスクリプトに取り組んでおり、URL の内部テキストを取得した後、文字列の文字セットを検出して、.xml を使用して「UTF-8」に変換したいと考えていますiconv()
。
私は多くのことを試しましたが、それらのどれもで動作しませんWindows-1256
。
私が試したこと: -
mb_detect_encoding($content)
エラーを与えるように検出Windows-1256
しますUTF-8
mb_detect_encoding($content, "windows-1256")
Illegal argument
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
この関数は、UTF-8 でない場合は "0" を返しますが、文字列が UTF-8 の場合は "ページが見つかりません" を返します。なぜかわからない!
私のコードは次のとおりです。
$html = file_get_html($url);
foreach($html->find('div[id=content]') as $element) {
$content = $element->innertext;
#Detect charset encoding of $content
}
私が使用している URL:
UTF-8: http://www.masrawy.com/news/Egypt/Politics/2013/March/3/5541050.aspx
Windws-1256: http://www.youm7.com/ /News.asp?NewsID=965545