2017-06-30 4 views
0

で後方スラッシュを削除します。このように、文字列を返す関数を実行しているとき、私は引用符の前に後方スラッシュで終わる文字列

$string = get_string(); 
// returns: <a href=\"http://example.com/\">Example</a> 

私はそれがどこかで起こって脱出のいくつかのタイプであると思います。私は後ろにスラッシュを置き換えることができることを知っていますが、これらのケースでは、実行するエスケープ機能のいくつかのタイプがありますか?

+1

? n HTML:完全にHTMLを壊す「Example」。 – bhttoan

答えて

2

引用符が開始/終了区切り文字と一致するときに引用符をエスケープする必要があります。このコードが正常に動作するはずです:

$string = '<a href="http://example.com/">Example</a>'; 

あなたの文字列は単一引用符で囲まれている場合」、そして "エスケープする必要はありません。同様に、逆が真である

stripslashes()の使用を避け、それとして。単一引用符は、スラッシュを含める必要がある場合は問題が発生する可能性があり、単純な検索/置換するにはあなたのために働く必要があります。

私は文字列をエコーするとき、私はこの私を
+0

から来た文字列を参照され

$string = '<a href=\"http://example.com/\">Example</a>'; $string = str_replace($string, '\"', '"'); echo $string; //echos <a href="http://example.com/">Example</a> 

+0

私のコードブロックのように '$ string'を修正しましたか?あなたのコードをコピーした場合、文字列にはバックスラッシュを含めないでください。 – FrankerZ

+0

いいえ、明確化の欠如について申し訳ありません。実際には、その文字列を返す関数を介して変数を取得します。だから私は変数を自分で設定しない*。 –

2
<?php 

$string = '<a href=\"http://example.com/\">Example</a>'; 

echo stripslashes($string); 

?> 
+0

私の答えで述べたように、 'stripslashes()'はダブルクォート**と**シングルクォートの前に両方のバックスラッシュを削除します。これは、javascriptが正しく機能するために一重引用符をエスケープする必要があるかのように、意図された動作ではない可能性があります。 'str_replace()'は正しい解決策でなければなりません。 – FrankerZ

関連する問題