2012-02-27 12 views
1

これが正しい動作で、効果的に対処する方法がわかりません。私は、PHPでのXMLパーサを定義しているし、それは次のようになります。php xml_parser UTF-8でエンコードされた値が分割されています

$xml_parser = xml_parser_create(); 
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8'); 
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1); 
xml_set_element_handler($xml_parser, "startElement", "endElement"); 
xml_set_character_data_handler($xml_parser, "characterData"); 
(....) 
function characterData($parser, $data){ print('<p>|' . $data . '|</p>');} 

入力XMLは、このようなものです:

<?xml version="1.0" encoding="UTF-8"?> 
<fields><field name="address"><value>aą</value></field></fields> 

を、出力は次のようになります。

|a| 
|ą| 

I

|aą| 

なぜPHPはUTF-8でエンコードされた文字列を別々の値に分割しますか?

+0

どのように '$ data'を設定しますか? – spencercw

+0

私はそれを設定しません、それはパーサーによってコールバック関数に渡されます。ここに説明があります:http://php.net/manual/en/function.xml-set-character-data-handler.php – camcam

答えて

1

答えはdocumentationである:それは、各フラグメント内部(例えば、非ASCII文字列の場合)を複数回呼び出すことができ

あなたのコードでは、それを処理するだけで済みます。

関連する問題