として表示されます。sqlからデータを取得し、各エントリの編集ボタン用のjavascriptを生成するためにphpを使用しています。編集インターフェースは、フォーム内のテキスト入力を使用します。生成された編集ボタンがクリックされると、このフィールド内のテキストはsqlからのエントリの名前と等しくなるように設定されます。引用符は、テキストフィールドに& QUOTに置き換えた場合にはhtml入力フィールドの二重引用符を含む文字列は、"
これは、( ")名前は、二重引用符が含まれている場合、すべての場合に予想される正常に動作し、
PHP genertaed javascriptのは以下の通りです:。
関数に渡される前にfunction editButton($suffix,$name)
{
echo "<button class=\"edit\" onclick=\"editMode$suffix()\">Edit</button>";
echo "<script>
<!--
function editMode$suffix(){
document.getElementById(\"title\").innerHTML = \"Edit Artist\"
var main = document.getElementById(\"main\");
main.style.display = 'none';
var edit = document.getElementById(\"edit\");
edit.style.display = 'block';
//Set the input of the edit interface to be equal to the current name
document.getElementById(\"editInput\").value = \"$name\";
document.getElementById(\"artEdit\").value = \"$name\";
}
-->
</script>";
}
$名変数が(にhtmlentitiesを経由して消毒されるが)。そうしないと、引用符を持つエントリの編集インタフェースにも表示されません。
を私はのように聞こえるどのこれを見つけました同じ問題が解決策がない(https://code.google.com/archive/p/embeddedjavascript/issues/19):/
誰かが解決策を持っている、または何か愚かなことを指摘することができます。この時点で、二重引用符の場合はデータベースエントリを無効にし、シングルに制限する必要があります。
あなたは人生の節約に感謝します。 Idは一重引用符に切り替えようとしましたが、addslashes関数を認識していませんでした。非常に便利です。奇妙なことに、str_replaceを使って同じことをしようとしましたが、どこにも行きませんでした。 – blaze2374