2016-06-01 9 views
0

データベースに挿入する前に<>をPHPの文字列に置き換えたいので、ユーザーがコードを入力したときにその関数を実行しません。PHPの文字列を置き換えるにはどうすればいいですか

$comment = str_replace("<", "&lt;", $comment); 
$comment = str_replace(">", "&gt;", $comment); 

しかし、私は同じ文字列を<3msgの中に置き換えたくありません。どうすれば私のコードを実行できますか?

+0

なぜDBに入れる前に置き換えたいですか? – nospor

+0

あなたはその権利の[htmlentities](http://php.net/manual/en/function.htmlentities.php)を持っていますか? try [strip_tags](http://php.net/manual/en/function.strip-tags.php) – Thamilan

+0

@nospor ...私が言ったように、ユーザーが文字列にコードを渡すと、私は望んでいない私がdbから取り出したときに実行されるコードは –

答えて

1

は、あなたが別の場所で一つの文字を持っている場合は、次のこのまたは何か他のものに常にしている例の文字のために、より多くの。仕する必要があり、この

$comment = str_replace("<", "&#60;", $comment); 
$comment = str_replace(">", "&#62;", $comment); 
$comment = str_replace("&#60;3msg", "<3msg", $comment); 
0

のように使用します。それ以外の場合は、置換する文字を正確に識別する必要があるため、不運になります。シナリオaboceには、htmlspecialchars(Link)という関数があります。

あなたのクエリに何も影響を与えず、SQLインジェクション攻撃が発生しないようにしたい場合は、できるだけ頻繁にプリペアドステートメントを使用することをお勧めします。あなたはこのhereについてのmorを読むことができます、そして、これで十分ではない場合、私はあなたにこれの例を与えることができます。

0

あなたがなどのスクリプトを削除するには、データベースの入力をサニタイズしたいなら、あなたはこのようなstrip_tags使用することができます:あなたがタグを保持しますが、あなたはまた、その意志htmlspecialcharsを使用することができますコードインジェクションを許可しないようにしたい場合は代わり

$comment = strip_tags($comment) 

をあなたが何かを見逃さないように、より完全で包括的な変換を行います。

0

これを試してみてください:

PHP関数をUseing:

​​
0

Hereを参照してください。

htmlentities()を使用して出力することができます。

$str = "A 'quote' is <b>and</b>"; 

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
echo htmlentities($str); 

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt; 
echo htmlentities($str, ENT_QUOTES); 

PS

あなたはそれが次のようになります。ビューのソースを参照して、結果を参照するには。 This

関連する問題