1

ユーザーがフォームに入力できるテキストをクリーンアップしようとしています。このフォームを介して不正なコードが挿入されないようにするために、より迅速な方法と追加の予防措置を講じていただければ幸いです。しかし、二重引用符の削除に特に問題があります。

私のコードは次のとおりです。

str_replace(array('<','>',')','\$','(', '?', '.', ',' ,'!', '-', '+', '/', '\*', '\\', '"'), " ", $text)

ただし、通常の二重引用符である MS ワードの " to " などの斜めの引用符は一致せず、削除されません。

これを修正するのを手伝ってもらえますか?

*フォームに POST を使用しており、解析以外の目的で入力を使用していません。

ありがとう

これが私がやろうとしていることのすべてです

str_replace(array('"'), " ", $text)

二重引用符をスペースに置き換えますが、PHP は Microsoft Word などのプログラムからの二重引用符を認識しません。ありがとう

4

3 に答える 3

4

MS スマート クォートは、この関数で削除できます。

function convert_smart_quotes($string) 
{ 
    $search = array(chr(145), 
                    chr(146), 
                    chr(147), 
                    chr(148), 
                    chr(151)); 

    $replace = array("'", 
                     "'", 
                     '"', 
                     '"', 
                     '-'); 

    return str_replace($search, $replace, $string); 
} 

または、それらをコードに追加します。

str_replace(array('<','>',')','\$','(', '?', '.', ',' ,'!', '-', '+', '/', '\*', '\\', '"', chr(145), chr(146), chr(147), chr(148)), " ", $text)

http://shiflett.org/blog/2005/oct/convert-smart-quotes-with-php

于 2012-04-16T20:34:57.043 に答える
1

あなたは何をしようとしているのですか?

すべての不明な出力が HTML を壊すのを防ぐhtmlspecialchars()関数があります。

于 2012-04-16T20:30:40.840 に答える
1

一部の文字のみをブラックリストに登録する代わりに、文字をホワイトリストに登録できます。次に、ホワイトリストに登録されていない文字をスペースに置き換えてから、複数のスペースを 1 つのスペースに正規化します。

$filtered = preg_replace(array('~\W~', '~[ ]{2, }~'), ' ', $text);
于 2012-04-16T20:40:58.107 に答える