PHP-如何只转义单引号?

我正在编写一些JavaScript代码,该代码使用PHP渲染的字符串。 如何在PHP字符串中转义单引号(和仅单引号)?

<script type="text/javascript">
    $('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>');
</script>
Andrew asked 2019-10-08T01:44:42Z
11个解决方案
57 votes

很简单:json_encode()但是,我建议使用JSON和json_encode()函数,因为它会更可靠(例如,引用新行):

<?php $data = array('myString' => '...'); ?>

<script>
   var phpData = <?php echo json_encode($data) ?>;
   alert(phpData.myString);
</script>
Crozin answered 2019-10-08T01:44:53Z
17 votes

如果您想使用'来转义字符,则可以使用",例如,如果您只想转义单引号,例如可以执行以下操作:

echo addcslashes($value, "'");

如果要转义'"\nul(字节为空),则可以使用addslashes()

echo addslashes($value);
PhoneixS answered 2019-10-08T01:45:26Z
15 votes
str_replace("'", "\'", $mystringWithSingleQuotes);
Julian answered 2019-10-08T01:45:44Z
9 votes

在某些情况下,我只是将其转换为ENTITIES:

                          //i.e.  $x= ABC\DEFGH'IJKL
$x=  str_ireplace("'",  "&apos;", $x);
$x=  str_ireplace("\\", "&bsol;", $x);
$x=  str_ireplace('"',  "&quot;", $x);

在HTML页面上,视觉输出是相同的:

ABC\DEFGH'IJKL

但是,已在源代码中对其进行了消毒。

T.Todua answered 2019-10-08T01:46:23Z
8 votes

要仅替换单引号,请使用以下简单语句:

$string = str_replace("'","\\'", $string);
DevelRoot answered 2019-10-08T01:46:49Z
2 votes

我知道我晚会晚了。 但是您可以利用addcslashes函数来完成此操作,

echo addcslashes($text, "'\\");
Mike A answered 2019-10-08T01:47:14Z
2 votes

使用本机函数htmlspecialchars,它将退出所有特殊字符。 如果要专门从quate逃脱,请使用ENT_COMPATENT_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 &amp; 'Tarzan'<br>
Jane &amp; &#039;Tarzan&#039;<br>
Jane &amp; 'Tarzan'

在此处阅读更多信息,[https://www.w3schools.com/php/func_string_htmlspecialchars.asp]

Nishad Up answered 2019-10-08T01:47:55Z
1 votes

经过长时间解决这个问题,我认为已经找到了更好的解决方案。

结合使用两个函数可以使字符串转义以用作HTML。

如果在javascript函数调用中使用字符串,则可以使用双引号转义,并且其他则避免使用单引号,以避免那些围绕参数的简单引号。

解:

mysql_real_escape_string(htmlspecialchars($string))

解决:

  • 创建以调用javascript函数之类的php

回声   'onclick =“ javascript_function(\''。mysql_real_escape_string(htmlspecialchars($ string))”

arturocu81 answered 2019-10-08T01:48:57Z
0 votes

不确定您对数据的用途是什么,但是您可以随时尝试:

$ string = str_replace(“'”,“%27”,$ string);

每当将字符串发送到数据库进行存储时,我都会使用它。%27是'字符的编码,如果发送到您的服务器的字符串中包含单个'字符,它还有助于防止GET请求中断。 我会在javascript和PHP中都将%替换为'27,以防万一有人尝试手动将某些数据发送到您的PHP函数。 要使其对最终用户更为美观,只需对从服务器获取的所有数据运行反向替换功能,然后将所有%27子字符串替换为'。

快乐注射避免!

Mike answered 2019-10-08T01:49:45Z
0 votes

我写了以下函数。 它替换了以下内容:

带斜杠和单引号[\']的单引号[']

带两个反斜杠[\\]的反斜杠[\]

function escapePhpString($target) {
    $replacements = array(
            "'" => '\\\'',
            "\\" => '\\\\'
    );
    return strtr($target, $replacements);
}

您可以对其进行修改,以在$ replacements数组中添加或删除字符替换。 例如,要替换\ r \ n,它将变为“ \ 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的简洁功能是它将更喜欢长替换。例如,“ Cool \ r \ nFeature”将转义\ r \ n而不是转义\ n。

Basil Musa answered 2019-10-08T01:50:41Z
0 votes

这是我的方法。 愚蠢但简单。

$singlequote = "'";
$picturefile = getProductPicture($id);

echo showPicture('.$singlequote.$picturefile.$singlequote.');

我正在输出称为JavaScript代码的HTML以显示图片...

Paisano Centobie answered 2019-10-08T01:51:14Z
translate from https://stackoverflow.com:/questions/6269188/how-do-i-escape-only-single-quotes