Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP生成的Javascript中转义撇号_Php_Javascript_Textfield_Escaping_Apostrophe - Fatal编程技术网

从PHP生成的Javascript中转义撇号

从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\" />

我试图创建一个带有初始值的文本字段,如果你点击它,文本就会消失,如果你在输入任何内容之前单击out,初始值就会返回,就像其他网站上的搜索框一样

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)呢?太棒了!作品非常感谢。把最后一句话改成撇号。