【问题标题】:How to check and remove the additional back slash coming in account for for apostrophe in PHP?如何检查和删除 PHP 中用于撇号的额外反斜杠?
【发布时间】:2015-05-18 11:28:41
【问题描述】:

我在名为$str 的变量中有一个字符串,如下所示。这是我将其转换为 JSON 格式后得到的。因此 JSON 添加了一个额外的斜杠,因此请忽略它,因为它在显示字符串时不会显示。

$str ="Let\\'s\nIt\\'s\nHe\\'s\nShe\\'s"; # \n is used for new line character, please ignore it

现在我想检查字符串中是否存在此类反斜杠/es,如果存在则删除它们并获得所需的清理字符串。在上述情况下,输出字符串应该是(将其转换为 JSON 格式后):"Let\'s\nIt\'s\nHe\'s\nShe\'s"

我尝试了下面的代码,但对我没有用:

$str         = br2nl(str_replace('\\','',$str));
function br2nl($buff = '') {
    $buff = mb_convert_encoding($buff, 'HTML-ENTITIES', "UTF-8");
    $buff = preg_replace('#<br[/\s]*>#si', "\n", $buff);
    $buff = trim($buff);

    return $buff;
  }

有人可以在这方面帮助我吗?

【问题讨论】:

  • 替换一个\str_replace('\','',$str)
  • @AmanRawat:这做不到。它给出了语法错误。因为我们必须为 PHP 中的每个斜线使用额外的斜线。
  • 字符串上的strip_slashes 甚至json_decode 怎么样?
  • 我的意思是一个简单的echo stripslashes("Let\\'s\nIt\\'s\nHe\\'s\nShe\\'s"); - 它会得到你描述的确切结果。请记住,最好以与编码字符串相同的方式进行解码。
  • 有点不清楚你在问什么。为什么你首先有那些斜线?我怀疑他们是故意的,你的“实际”文本可能不应该包含这些,对吧? JSON 将添加一个斜杠来转义反斜杠,是的。为什么这是不受欢迎的?如果您不希望数据中出现反斜杠,那么您的数据中不应该有反斜杠,而不是手动摆弄文本格式转义。

标签: php json str-replace backslash stripslashes


【解决方案1】:

如前所述,stripslashes() 是最好的方法:

<?php
  $dirty ="Let\\'s\nIt\\'s\nHe\\'s\nShe\\'s";
  $clean = stripslashes($dirty);
  echo $clean."\n";
?>

输出:

让我们 它是 他是 她是

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-09
    • 2016-03-24
    • 2016-06-16
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多