我想从 php 文件执行 JavaScript 函数
喜欢:
<?php
$type=0;
echo('<img onclick="alert('.$type.')" src="picture.jpg"/>');
?>
结果:一切正常。现在我想用字符串来做到这一点:
<?php
$type='e';
echo('<img onclick="alert('.$type.')" src="picture.jpg"/>');
?>
结果:未捕获引用错误:e未定义onclick @ loadPlayer2.php:2
<?php
$type='e';
echo('<img onclick="alert("'.$type.'")" src="picture.jpg"/>');
?>
结果:未捕获语法错误:意外的标记}
<?php
$type='e';
echo('<img onclick="alert(\"'.$type.'\")" src="picture.jpg"/>');
?>
结果:未捕获语法错误:意外的标记非法
<?php
$type='\e';
echo('<img onclick="alert("$type")" src="picture.jpg"/>');
?>
结果:未捕获语法错误:意外的标记}
最佳答案
不同的上下文需要不同的转义。您正在将 PHP 字符串与 HTML 属性和 JavaScript 字符串混合在一起。
String interpolation仅适用于双引号:
alternate single+dbl quotes ↓ echo "<img onclick='alert(\"$type\")' src='picture.jpg'>" ↑ escaped quote
$type
变量可以根据json_encode
从 PHP 字符串转换为 JS 字符串。 :$type = json_encode($type); echo "<img onclick='alert($type)' src='picture.jpg'>" ↑ adds "double" quotes automatically
最好申请
htmlspecialchars
对于整个属性:$type = json_encode($type); $onclick = htmlspecialchars("alert($type)"); echo "<img onclick='$onclick' src='picture.jpg'>" ↑ escapes `"` into `"`
因此结果输出应如下所示:
<img onclick='alert("\\e")' src='picture.jpg'> ↑ pseudo-XHTML begone
此时,甚至可以再次使用
"
作为属性值。
关于javascript - PHP 与 onclick 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419186/