0

次のような単純な XML スクリプトがあります。

$file='example.xml';
if (file_exists($file)) {
    $xml = simplexml_load_file($file);
    $f = fopen('newfile.csv', 'w');

    // array to hold the field names
    $headers = array(); 
    // loop through the first set of fields to get names
    foreach ($xml->Information->children() as $field) { 
        // put the field name into array
        $headers[] = $field->getName(); 
    }
    // print headers to CSV
    fputcsv($f, $headers, ',', '"');

    foreach ($xml->Information as $information) {
        fputcsv($f, get_object_vars($information), ',', '"');
    }
    fclose($f);
}

ただし、記号が含まれている場合example.xmlは、として表示されます。£newfile.csv£

これを克服する方法はありますか?example.xmlwgetされたリモートファイルであるため、のエンコーディングがわかりません。

4

1 に答える 1

0

これを行う 1 つの方法は、ファイル内のエンコーディングを検出することです。これは、curl セッションでヘッダーを処理することによって実行できます。があるはずContent-Typeです。それ以外の場合は、xml 仕様で utf-8 が基本文字セットとして定義されているため、それを使用してみることができます。

mb_detect_encodingcurl を使用したくない場合にも使用できますが、最初に使用してみます。

次に、必要に応じて、iconvまたはを使用mb_convert_encodingしてタイプを utf-8 または好みの文字セットに変更し、ファイルを保存できます。

さよなら

于 2012-10-14T13:10:03.173 に答える