我使用此代码来生成html
echo "<input type='button' onclick=\"myFunc('$param');\" />";
除非$ param包含'
或"
字符,否则一切都会好的。如何处理这些情况?
PS。当用户输入"
时,mysql_real_escape_string($ param)将无法正常工作。
答案 0 :(得分:7)
可以使用几种功能:
<?php
$string = 'string test"';
echo htmlentities($string) . "\n";
echo addslashes($string) . "\n";
他们产生以下内容:
string test"
string test\"
答案 1 :(得分:4)
如果您依赖用户输入,请使用htmlentities($param, ENT_QUOTES);
答案 2 :(得分:3)
$param=addslashes($param);
echo "<input type='button' onclick=\"myFunc('$param');\" />";
答案 3 :(得分:2)
从htmlspecialchars($pram,ENT_QUOTES)
答案 4 :(得分:2)
每当想到逃跑时,你总是需要问
“我想在哪种情况下逃避?”
因为逃避本质上是确保输入不被解释为目标的特殊含义,而是文字
不使用addslashes,因为它是无环境的
如果要将字符串插入HTML,请使用
htmlspecialchars($argument, ENT_QUOTES)
如上所述。
onclick 内容部分是技术性的JavaScript,因此使用json_encode转义内容可能是合适的(它的副作用是特定于JavaScript的转义)。同样,如果你有style属性,你想要用
转义内容addcslashes($s, "\x00..\x2C./:;<=>?@[\\]^`{|}~")
<强>摘要强>
使用
$param = htmlspecialchars(json_encode($param), ENT_QUOTES)
然后您可以安全地将其包含在HTML字符串
中答案 5 :(得分:1)
首先做
// only for the GUY who didn't read the complete answer :(
$param=addslashes($param);
然后用简单的HTML编写代码
<input type='button' onclick="myFunc(<?php echo $param?>);" />
注意: mysql_real_escape_string
在使用addslashes
答案 6 :(得分:0)
这对我有用......
echo '<a href="#" onclick="showTable(''.$table.'')">'.$table.'</a>';
当使用echo的单引号时,没有必要使用backslaches进行转义。单引号让我投票使用php和javascript + html标签。