私はPHPベースの多言語サイトに取り組んでいます。エスケープPHPとjavascriptのヘブライ二重引用符
多言語をサポートするために、以下のようなローカライズファイルを使用しています。以下のような双方向で使用
[localize.en-US.php]
$lang_code = "en-US";
$is_rtl = false;
.
.
.
define("WORD_EMAIL", "e-mail");
define("WORD_NAME", "name");
.
.
.
定義された単語。
[HTML]
<?=WORD_EMAIL?> : <input type="text" name="email"/>
<?=WORD_NAME?> : <input type="text" name="name"/>
私はヘブライ語での作業のだとき[Javascriptの]
if(frm.email.value==="") {
alert("<?=WORD_EMAIL?> required.");
return false;
}
は、問題が発生しました。
ヘブライ語の「電子メール」には二重引用符があります。
二重引用符をエスケープしようとしました。
二重引用符をエスケープするため、
PHPは1つのバックスラッシュを必要とし、Javascriptを1以上とバックスラッシュのためにお互いを必要としています。
二重引用符の前に3つのバックスラッシュを追加しました。
javascriptアラートで正しいことを示します。しかし、HTMLのバックスラッシュ(javascriptの場合)が表示されます..
はい、私はこれを簡単に解決することができます。
しかし、ローカライズファイルの中では例外が発生します(一部のフランス語では一重引用符が使用されます)。
誰でもこれについてお手伝いできますか?すべての手がかりを歓迎します。
あなたは、アレイ内のすべての翻訳を置けばそれは非常に簡単になります。次に、 'json_encode()'を使ってjavascriptに配列を正しく送ることができます。 'alert(<?= json_encode(WORD_EMAIL);?> +" required。 ");'を使って試してみることができます。もちろん、htmlに出力するときには 'htmlspecialchars()'が必要です。 – jeroen
shabbat shalom goyim多分これはあなたを助けるでしょう
http://php.net/manual/en/function.htmlspecialchars.php –