gpt4 book ai didi

php - 在从 PHP 生成的 Javascript 中转义撇号

转载 作者:行者123 更新时间:2023-11-29 18:35:33 26 4
gpt4 key购买 nike

我正在尝试创建一个带有初始值的文本字段,如果您单击它,文本就会消失,如果您在输入任何内容之前单击退出,则返回初始值很像 Yahoo answers 上的搜索框。和许多其他网站。

echo "<input type=\"text\" 
onblur=\"if (this.value == '') {this.value = '$cleaned';}\"
onfocus=\"if (this.value == '$cleaned') {this.value = '';}\"
value=\"$cleaned\" />\n";

我有一个 php 变量 $cleaned 作为我的初始值。此代码有效,但变量 cleaned 中有撇号的情况除外,例如 $cleaned = "FRIEND'S"。然后代码将读取 this.value = 'FRIEND'S' 并且 FRIEND'S 中的撇号提前结束字符串。

我尝试过使用 html 实体、转义撇号和使用转义引号,但无法使这种情况起作用。到目前为止,我唯一的解决方案是用看起来像撇号的字符替换撇号。

有人知道如何处理这种情况吗?

最佳答案

使用json_encode对要在 JavaScript 和 htmlspecialchars 中使用的数据进行编码对要在 HTML 属性值中使用的字符串进行编码:

echo '<input type="text"
onblur="'.htmlspecialchars("if (this.value == '') {this.value = ".json_encode($cleaned).";}").'"
onfocus="'.htmlspecialchars("if (this.value == ".json_encode($cleaned).") {this.value = '';}").'"
value="'.htmlspecialchars($cleaned).' />'."\n";

但使用 defaultValue肯定更容易:

echo '<input type="text"
onblur="'.htmlspecialchars("if (this.value == '') {this.value = defaultValue;}").'"
onfocus="'.htmlspecialchars("if (this.value == defaultValue) {this.value = '';}").'"
value="'.htmlspecialchars($cleaned).'" />'."\n";

关于php - 在从 PHP 生成的 Javascript 中转义撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com