ASCII 制御文字は、私が定期的に管理しているデータベースに侵入しています。INSERT
それらが SQL に組み込まれないようにする手段を実装する予定ですが、データベースに既に存在する文字を最初に処理する必要があります。
手始めに、SQLを使用して検索と置換を行うことが可能であることを知っています...
UPDATE [table_name]
SET [field_name]=REPLACE([field_name],'[string_to_find]','[string_to_replace]');
PHP では、配列を使用して複数の項目を別のものに置き換えることができます...
$result = str_ireplace(array('1','2','3','4','5'),'0',$my_string);
では、ループ内の怠惰な SQL クエリの代わりに、SQL クエリを作成して複数の ASCII 制御文字を置き換える方法はありますか?
また、これらの制御文字をどのように置き換えるか (10 進数、10 進数、16 進数など)も非常に重要です。
また、キャリッジ リターンは制御文字 0 ~ 31 の一部であることを読んだので、明らかに改行が保持されていることを確認するためにそれらを削除したくありません。
これは私が今行っている参照ページです...
XHTML を application/xhtml+xml としてコーディングし、以下をexample1.xhtmlとしてテストし、バイト オーダー マーク (BOM)なしでFirefoxで明示的に開きます ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body>
<div>
<p>�	



</p>
</div>
</body>
</html>
不正なXMLを作成せずに使用できる文字は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body>
<div>
<p>	

</p>
</div>
</body>
</html>
SQL で削除したくない作業文字は...
09 - 水平タブ
10 - 改行
13 - キャリッジ リターン