xmlに垂直タブが含まれていて解析エラーになる件
スマートフォンアプリのxmlパース処理で、アプリが落ちる事象が発生しました。
調べてみると、どうやら以下の文字列の処理字に失敗している模様。
TEXTTEXT
(実際はTEXT TEXTの間にバイトコードが含まれています。)
調べてみる。
<?php $value = "TEXT^KTEXT"; for( $i=0;$i<strlen($value);$i++ ){ $c = $value[$i]; echo ord( $c )."\n"; }
結果
84 #0x54 T 69 #0x45 E 88 #0x58 X 84 #0x54 T 11 #0x0b VT(垂直タブ) 84 #0x54 T 69 #0x45 E 88 #0x58 X 84 #0x54 T
どうやら11 #0x0b VT(垂直タブ)が悪さをしているようです。
XML 垂直タブでググってみる
xml文書構文解析時のエラーについて
他にもXMLに垂直タブでトラブルの報告がちらほら。。。
ということでxmlに垂直タブを出力しない方針に。
xmlはサーバ側のWEB APIが吐き出しているので、、、
echo preg_replace('/[\x0b]/', '', $output_xml );
取り急ぎのパッチを当てました。
多分、垂直タブ以外の制御コードも解析失敗する可能性があると思うので、引き続き調査が必要ですな。