PHPWOrdエクスポートテンプレートWordファイルを開くことができませんxml pasing error

2012 ワード

最近、ウェブサイトの大量エクスポート版wordを処理する時、1つの問題に出会った:ウェブサイトはPHP言語で書かれたもので、エクスポート版word(ユーザーが記入した内容をwordの対応する位置に動的に挿入し、.docまたは.docxファイルを生成する)はPHPWOrdプラグインを採用しているが、一部のwordファイルが開くことができないことを発見し、「xml pasing error行2列25343」を提示した.
解決の過程:1、何とかしてエクスポートしたこのwordファイル(tmp.docxと仮定)のxml部分を表示する:docx接尾辞名を.zip後解凍しwordフォルダに入りdocumentを開く.xml後に対応する行2列25343を表示し、前後の内容を表示する
2、近くの内容に「粒子状物質の直径<10 mm」という文字が表示されていることを発見しました.
3、関連するxmlエスケープ文字を調べてみると、xmlファイルの「&」、「」、単一引用符、二重引用符はxmlファイルのコンパイルエラーを引き起こし、特に「&」と「
4、PHPWOrdカードの関連挿入関数setValueを呼び出す時、まず挿入内容を標準化する:>( ):>
"( ):"
'( ):'
&( ):&

末尾のセミコロンに注意する.
5、完璧に解決する.PS.もう一つの解決策は、PHPWOrdのプラグインコードを修正し、public function setValue($search, $replace)関数内で、操作を行う前に、$replaceを先にフォーマットすることである.
 $replace=str_replace('&','&',$replace);
 $replace=str_replace(','<',$replace);
 $replace=str_replace('>','>',$replace);
 $replace=str_replace('\'','"',$replace);
 $replace=str_replace('"',''',$replace);

すぐ