我正在编写一些使用PHP呈现的字符串的JavaScript代码。如何在PHP字符串中转义单引号(和单引号)?
<script type="text/javascript">
$('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>');
</script>
答案 0 :(得分:57)
非常简单:echo str_replace('\'', '\\\'', $myString);
但是,我建议使用JSON和json_encode()
函数,因为它更可靠(例如引用新行):
<?php $data = array('myString' => '...'); ?>
<script>
var phpData = <?php echo json_encode($data) ?>;
alert(phpData.myString);
</script>
答案 1 :(得分:19)
如果你想要使用\
转义字符,例如你有addcslashes()
,如果你只想逃避单引号,就像你可以做的那样:
echo addcslashes($value, "'");
如果您想要转义'
,"
,\
和nul
(字节为空),您可以使用addslashes()
:
echo addslashes($value);
答案 2 :(得分:15)
str_replace("'", "\'", $mystringWithSingleQuotes);
答案 3 :(得分:9)
在某些情况下,我只是将其转换为ENTITIES:
//i.e. $x= ABC\DEFGH'IJKL
$x= str_ireplace("'", "'", $x);
$x= str_ireplace("\\", "\", $x);
$x= str_ireplace('"', """, $x);
在HTML页面上,视觉输出相同:
ABC\DEFGH'IJKL
然而,它在源头上被消毒了。
答案 4 :(得分:8)
要仅替换单引号,请使用以下简单声明:
$string = str_replace("'","\\'", $string);
答案 5 :(得分:2)
我知道我迟到了。但是你可以利用addcslashes函数来完成这样的工作,
echo addcslashes($text, "'\\");
答案 6 :(得分:2)
使用原生函数htmlspecialchars
它将从所有特殊的charector中逃脱。如果您想特别逃离quate,请使用ENT_COMPAT
或ENT_QUOTES
。这是一个例子。
$str = "Jane & 'Tarzan'";
echo htmlspecialchars($str, ENT_COMPAT); // Will only convert double quotes
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
输出就像这样
Jane & 'Tarzan'<br>
Jane & 'Tarzan'<br>
Jane & 'Tarzan'
在此处阅读更多内容,https://www.w3schools.com/php/func_string_htmlspecialchars.asp
答案 7 :(得分:1)
经过长时间的努力解决这个问题,我认为找到了更好的解决方案。
组合两个函数可以转义字符串以用作HTML。
如果你在javascript函数调用中使用字符串,那么可以转义双引号 另一个是逃避单引号,以避免那些围绕论证的简单引用。
<强>解决方案:强>
mysql_real_escape_string(htmlspecialchars($string))
<强>解决:强>
回波 &#39;的onclick =&#34; javascript_function(\&#39;&#39; .mysql_real_escape_string(用htmlspecialchars($字符串))&#34;
答案 8 :(得分:0)
不确定您的数据到底在做什么,但您可以随时尝试:
$ string = str_replace(“'”,“%27”,$ string);
每当将字符串发送到数据库进行存储时,我都会使用它。 %27是'字符的编码,如果发送到服务器的字符串中包含单个'字符,它还有助于防止GET请求中断。我会在javascript和PHP中替换'%27,以防万一有人试图手动将一些数据发送到你的PHP函数。为了让最终用户更漂亮,只需对从服务器返回的所有数据运行反向替换功能,并用'替换所有%27子串。
快乐注射避免!
答案 9 :(得分:0)
我是这样做的。傻,但很简单。
$singlequote = "'";
$picturefile = getProductPicture($id);
echo showPicture('.$singlequote.$picturefile.$singlequote.');
我正在努力输出名为JavaScript代码的HTML以显示图片......
答案 10 :(得分:0)
我写了以下功能。它取代了以下内容:
单引号[']斜杠和单引号[\']
反斜杠[\],带有两个反斜杠[\\]
function escapePhpString($target) {
$replacements = array(
"'" => '\\\'',
"\\" => '\\\\'
);
return strtr($target, $replacements);
}
您可以修改它以在$ replacements数组中添加或删除字符替换。例如,要替换\ r \ n,它将变为“\ r \ n”=&gt; “\ r \ n”和“\ n”=&gt; “\ n” 个。
/**
* With new line replacements too
*/
function escapePhpString($target) {
$replacements = array(
"'" => '\\\'',
"\\" => '\\\\',
"\r\n" => "\\r\\n",
"\n" => "\\n"
);
return strtr($target, $replacements);
}
关于strtr的简洁功能是它更喜欢长期替换。 例如,“Cool \ r \ nFeature”将转义\ r \ n而不是转义\ n。