2011-12-14 21 views
0

私はこれまで2つの関数を使用していましたが、うまくいきました。私はCakePHPアプリケーションを開発していますが、何らかの理由でこれらの関数を使用しても何もしません。私は簡単なテストをセットアップしました。それが真実を返すとは信じられません。PHP htmlentities()とhtmlspecialchars()が壊れています/動作しません

$loc_title = htmlentities($location['locations']['title']); 

if(htmlentities($location['locations']['title']) === $location['locations']['title']){ 

    echo "htmlentaties is broken."; 
} 

これらの機能が正常に機能しなくなる原因は何でしょうか?

+0

h()と似たメソッドを使用する必要があることに注意してください。たとえば、ent()などと呼ばれ、正しいエンコーディングが3番目のパラメータとして渡されます。 – mark

+0

はあなたの質問に重要な$ loc_titleですか? – SuitedSloth

+0

あなたがあなたの答えを持っているのを見ます。 – SuitedSloth

答えて

4

は、ここで何をやっているBeause ;-)例えば

htmlentities($location['locations']['title']) === $location['locations']['title'] 

htmlentities($location['locations']['title'] === $location['locations']['title']) 

の変更を検討し、あなたが自分自身とタイトルとの比較結果にエンティティをエスケープです。これはおそらく真であると評価される。

+0

コピー/貼り付けがうまくいかなかったのは、htmlentatitesとhtmlspecialcharsをテストしていたからです。私の悪い。私はちょうど私が使用しているコードを反映するために私のコメントを更新しました。私はHTML文字列のjavascript変数を作成するためにこの配列を反復処理しているので、関数がすべての文字をエスケープしていないことを100%証明しています。私は、二重引用符と一重引用符がうまく配置されていないため、JSエラーが発生し続けます。 – DirtyBirdNJ

+0

更新プログラムによってアンバランスな括弧が導入されました。文字列をエスケープしてJavaScript文字列として使用する場合は、代わりに 'json_encode'を見てください。 –

+0

参照: 'php> var_dump(htmlentities( '<">')); string "(14)" < " > " –

関連する問題