我正在编写一些使用PHP呈现的字符串的JavaScript代码.如何在PHP字符串中转义单引号(和单引号)?
<script type="text/javascript">
$('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>');
</script>
Run Code Online (Sandbox Code Playgroud)
Cro*_*zin 62
很简单:echo str_replace('\'', '\\\'', $myString);
但是,我建议使用JSON和json_encode()函数,因为它会更可靠(例如引用新行):
<?php $data = array('myString' => '...'); ?>
<script>
var phpData = <?php echo json_encode($data) ?>;
alert(phpData.myString);
</script>
Run Code Online (Sandbox Code Playgroud)
Pho*_*ixS 19
如果你想逃离一个字符\,你有addcslashes(),如果你想逃避,单引号一样,你可以做些什么的问题,例如:
echo addcslashes($value, "'");
Run Code Online (Sandbox Code Playgroud)
如果你想逃避',",\和nul(字节空),可以使用addslashes():
echo addslashes($value);
Run Code Online (Sandbox Code Playgroud)
Jul*_*ian 16
str_replace("'", "\'", $mystringWithSingleQuotes);
Run Code Online (Sandbox Code Playgroud)
T.T*_*dua 10
在某些情况下,我只是将其转换为ENTITIES:
// i.e., $x= ABC\DEFGH'IJKL
$x = str_ireplace("'", "'", $x);
$x = str_ireplace("\\", "\", $x);
$x = str_ireplace('"', """, $x);
Run Code Online (Sandbox Code Playgroud)
在HTML页面上,视觉输出是相同的:
ABC\DEFGH'IJKL
Run Code Online (Sandbox Code Playgroud)
但是,它在源头上被消毒了.
使用本机功能htmlspecialchars。它将摆脱所有特殊字符。如果您想专门从引用中转义,请使用 withENT_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
Run Code Online (Sandbox Code Playgroud)
输出将是这样的:
Jane & 'Tarzan'<br>
Jane & 'Tarzan'<br>
Jane & 'Tarzan'
Run Code Online (Sandbox Code Playgroud)
在PHP htmlspecialchars() 函数中阅读更多内容
要仅替换单引号,请使用以下简单语句:
$string = str_replace("'", "\\'", $string);
Run Code Online (Sandbox Code Playgroud)
您可以使用addcslashes函数来完成此操作,如下所示:
echo addcslashes($text, "'\\");
Run Code Online (Sandbox Code Playgroud)