2012-02-28 11 views
0

私は脱出しようとしているブラウザでサーバーブラウザへの無効な出力を防ぐために、PHP文字列のhtml要素をエスケープしますか?

echo '<select name="services" onchange="document.getElementById("services").style.display = this.options.selectedIndex ? "block" : "none";" >'; 

出力

<select "none";"="" :="" "block"="" ?="" services").style.display="this.options.selectedIndex" onchange="document.getElementById(" name="services"></select> 

入力内のJavaScriptとHTMLのselect要素を含む文字列をエコー問題を抱えています文字列は\文字を使用していますが、何も動作していないようです。

echo '<select name="services" onchange="document.getElementById(\"services\").style.display = this.options.selectedIndex ? \"block\" : \"none\";" >'; 

出力

<select \"none\";"="" :="" \"block\"="" ?="" services\").style.display="this.options.selectedIndex" onchange="document.getElementById(\" name="services"></select> 

任意のトリックやハックは、この問題を回避するには?

おかげ

+2

私は非常にあなたがHTMLとその文字属性値で許可されているの詳細については示唆しています。 http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2 – hakre

+0

@hakre - 文字列内の有効な入力を参照してください - http://www.w3schools.com/tags/tag_select.asp --inb4 w3fools bandwagon – kaleeway

+0

**入力**は無効です(PHP文字列になる前に)。それを修正しようとすることは可能ですが(ish)、ソースで問題を修正する必要があります。 selectタグで許可されている属性は無関係です(二重には関係ないゴミの無関係な部分にリンクしています)。問題は一般的なHTML属性ルールである値の ''の文字です – Quentin

答えて

3

試してみてください。

echo "<select name=\"services\" onchange=\"document.getElementById('services').style.display = this.options.selectedIndex ? 'block' : 'none';\" >"; 
+1

ありがとう、それはそれをソート! – kaleeway

+1

彼の答えを受け入れる! @ ududokai; – ehudokai

+0

;落ち着く!ハーブティーを持って行く! – kaleeway

-1
echo '<select name="services" onchange="document.getElementById(\"services\").style.display = this.options.selectedIndex ? \"block\" : \"none\";" >'; 
+0

ありがとうございましたが、私もそれを試して、まだ間違った出力を得る – kaleeway

関連する問題