如何逃脱只有单引号?

我正在编写一些使用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("'", "&apos;", $x); $x= str_ireplace("\\", "&bsol;", $x); $x= str_ireplace('"', "&quot;", $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来显示图片…