从PHP生成的Javascript中转义撇号
我试图创建一个带有初始值的文本字段,如果你点击它,文本就会消失,如果你在输入任何内容之前单击out,初始值就会返回,就像其他网站上的搜索框一样从PHP生成的Javascript中转义撇号,php,javascript,textfield,escaping,apostrophe,Php,Javascript,Textfield,Escaping,Apostrophe,我试图创建一个带有初始值的文本字段,如果你点击它,文本就会消失,如果你在输入任何内容之前单击out,初始值就会返回,就像其他网站上的搜索框一样 echo "<input type=\"text\" onblur=\"if (this.value == '') {this.value = '$cleaned';}\" onfocus=\"if (this.value == '$cleaned') {this.value = '';}\" value=\"$cleaned\" />
echo "<input type=\"text\"
onblur=\"if (this.value == '') {this.value = '$cleaned';}\"
onfocus=\"if (this.value == '$cleaned') {this.value = '';}\"
value=\"$cleaned\" />\n";
echo“\n”;
我有一个php变量$cleaned
作为初始值。此代码有效,但变量cleaned中有撇号的情况除外,如$cleaned=“FRIEND'S”
。然后代码将读取this.value='FRIEND'S'
,并且FRIEND'S
中的撇号将提前结束字符串
我尝试过使用html实体、转义撇号和转义引号,但无法使这个案例起作用。到目前为止,我唯一的解决办法是用看起来像撇号的字符替换撇号
有人知道怎么处理这个案子吗?这个怎么样
echo '<input type="text"
onblur="if (this.value == "") {this.value = "' . $cleaned . '";}"
onfocus="if (this.value == "' . $cleaned . '") {this.value = "";}"
value="' . $cleaned . '" />\n';
echo'\n';
用于对JavaScript中使用的数据进行编码,并对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";
首先生成纯JavaScript代码。您可以使用创建有效的JavaScript值,如下所示:
$js = 'if (this.value == '.json_encode($cleaned).') {this.value = "";}';
echo '<input type="text" onblur="'.htmlspecialchars($js).'" />';
然后生成HTML。您可以使用以下代码对所有HTML属性进行编码,包括那些包含内联JavaScript代码的属性:
$js = 'if (this.value == '.json_encode($cleaned).') {this.value = "";}';
echo '<input type="text" onblur="'.htmlspecialchars($js).'" />';
echo';
它是一个变量……为什么要用引号括起来?应该是如果(this.value==$cleaned)哦,等等,这是一个php变量……那么addslashes($cleaned)呢?太棒了!作品非常感谢。把最后一句话改成撇号。