如何逃脱只有单引号?
我正在编写一些使用PHP呈现的string的JavaScript代码。 我怎样才能在我的PHPstring中转义单引号(只有单引号)?
<script type="text/javascript"> $('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>'); </script>
非常简单: echo str_replace('\'', '\\\'', $myString);
不过,我build议使用JSON和json_encode()
函数,因为它会更可靠(例如引用新行):
<?php $data = array('myString' => '...'); ?> <script> var phpData = <?php echo json_encode($data) ?>; alert(phpData.myString); </script>
str_replace("'", "\'", $mystringWithSingleQuotes);
要只replace单引号,使用这个简单的语句:
$string = str_replace("'","\\'", $string);
在某些情况下,我只是将其转换为实体:
//ie $x= ABC\DEFGH'IJKL $x= str_ireplace("'", "'", $x); $x= str_ireplace("\\", "\", $x); $x= str_ireplace('"', """, $x);
在HTML页面上,可视化输出是一样的:
ABC\DEFGH'IJKL
但是,从源头上消毒。
如果你想转义字符\
你有addcslashes()
例如,如果你想只转义单引号就像你可以做的问题:
echo addcslashes($value, "'");
如果你想逃避'
, "
, \
和nul
(空字节),你可以使用addslashes()
:
echo addslashes($value);
经过长时间的处理,我觉得find了更好的解决办法。
结合两个函数使得可以将一个string转义为HTML。
一个用于在javascript函数调用中使用string来转义双引号,另一个用于转义单引号以避免简单的引用。
解:
mysql_real_escape_string(htmlspecialchars($string))
解决:
- 创build一个PHP来调用一个JavaScript函数
echo'onclick =“javascript_function(\''。mysql_real_escape_string(htmlspecialchars($ string))”
不知道你的数据到底是什么,但你可以试试:
$ string = str_replace(“'”,“%27”,$ string);
每当将string发送到数据库进行存储时,我都会使用它。 %27是'字符的编码,并且如果发送到服务器的string中包含单个字符,也有助于防止GET请求中断。 我会用JavaScript和PHP中的%27replace,以防万一有人试图手动发送一些数据到你的PHP函数。 为了让您的最终用户更漂亮,只需对您从服务器获取的所有数据运行逆replace函数,然后将所有%27个子stringreplace为'。
快乐注射避免!
我写了下面的函数。 它取代了以下内容:
单引号[']斜杠和单引号[\']
反斜杠[\]用两个反斜杠[\\]
function escapePhpString($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\' ); return strtr($target, $replacements); }
您可以修改它以在$ replacements数组中添加或删除字符replace。 例如,要将\ r \ nreplace为“\ r \ n”=>“\ r \ n”和“\ n”=>“\ n”。
/** * With new line replacements too */ function escapePhpString($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\', "\r\n" => "\\r\\n", "\n" => "\\n" ); return strtr($target, $replacements); }
关于strtr的整洁的特点是它会更喜欢长时间的replace。 例如,“酷\ r \ nFeature”将转义\ r \ n而不是转义\ n。
这是我如何做到的。 傻,但很简单。
$singlequote = "'"; $picturefile = getProductPicture($id); echo showPicture('.$singlequote.$picturefile.$singlequote.');
我正在输出称为JavaScript代码的HTML来显示图片…