2011-11-15 35 views
2

私の悲しみの原因は、現時点では空白でない空白だと思います。XML非空白の空白

バックオフィスシステムから、私たちのMySQLデータベースに厄介な文字がいくつか見つかりました。 PHPのXMLWriterを使ってXML出力を実行しようとしていますが、これらのばかげた文字がフィールドに入っています。

彼らは奇妙な四角い箱としてgeditので、ナノ^Kように表示されている、とあなたは、MySQLで手動で削除するとき、あなたはあなたを知っているにもかかわらず、彼らは、phsyicalスペースを取りません。何かを削除しました。

私はそれらを取り除くのを助けてください!

ここでは、現在の悪夢である行があります(私はXMLWriterビルドアップの残りの部分をスキップしました)。

$writer->writeElement("description",$myitem->description); 
+1

どこにそれらを取り除くしたいですか? – hakre

+0

MySQLを取り除くのは素晴らしいですが、エンコーディングを変更してもそれらを取り除くことはできません。XMLファイルを出力する前に削除する必要があります。 –

+0

XMLをビルドするスクリプトを追加してくださいファイル。さらに、 '^ K'がnanoで何を表しているのか知っていますか?これらの文字の仕様をnanoにリンクしてください。 – hakre

答えて

0

削除する文字を特定したら(バイナリシーケンス)、削除することができます。 str_replaceと例えば:

$binSequence = "..."; // the binary representation of the character in question 
$descriptionFiltered = str_replace($binSequence, '', $myitem->description); 
$writer->writeElement("description", $descriptionFiltered); 

あなたが話しているコンクリートのどの文字については、まだ指定していないので、私はまだバイナリ・シーケンスを指定することはできません。また、文字のグループについて話している場合は、フィルタリングが多少異なる場合があります。

0

vertical tabs、ASCII x0Bと思われます。あなたは、MySQLでそれらをREPLACEすることができるはずです。

SELECT REPLACE('\v', '', `value`) WHERE key = 'foo'; 

しかし、the official referenceは、具体的\vについて言及していません。それが動作しない場合は、(PHP 5.2.5以降)簡単なstr_replaceとその後PHPでそれを削除することができます。

str_replace("\v", '', $result);