使用PHP转义变量中的引号

时间:2011-04-16 11:11:54

标签: php javascript

我使用此代码来生成html

echo "<input type='button' onclick=\"myFunc('$param');\" />";

除非$ param包含'"字符,否则一切都会好的。如何处理这些情况?

PS。当用户输入"时,mysql_real_escape_string($ param)将无法正常工作。

7 个答案:

答案 0 :(得分:7)

可以使用几种功能:

<?php
$string = 'string test"';

echo htmlentities($string) . "\n";
echo addslashes($string) . "\n";

他们产生以下内容:

string test&quot;
string test\"

答案 1 :(得分:4)

如果您依赖用户输入,请使用htmlentities($param, ENT_QUOTES);

请参阅http://uk.php.net/manual/en/function.htmlentities.php

答案 2 :(得分:3)

达明说:使用addslashes:)

$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./:;<=>?@[\\]^`{|}~")

(来源:http://translate.google.com/translate?u=http%3A%2F%2Fphpfashion.com%2Fescapovani-definitivni-prirucka&ie=UTF8&sl=cs&tl=en

<强>摘要
使用

$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

处理mysqltry时有效

答案 6 :(得分:0)

这对我有用......

echo '<a href="#" onclick="showTable(&#039;'.$table.'&#039;)">'.$table.'</a>';

当使用echo的单引号时,没有必要使用backslaches进行转义。单引号让我投票使用php和javascript + html标签。