【问题标题】:Using stripslashes on a database row php在数据库行php上使用stripslashes
【发布时间】:2011-08-31 21:52:24
【问题描述】:
{$row['info']}

我如何在这个上使用 stripslashes() php 函数?

我试过了: stripslashes({$row['info']}),不起作用,这个:{stripslashes($row['info'])}

都不行。

我必须先使用 $var 吗??

谢谢

【问题讨论】:

  • 你想做什么?这不是stripslashes 的用途。
  • @meagar:如果他的$row['info'] = "This is the foo\'s place!"; 那么echo stripslashes($row['info']); 正是他应该做的事情。
  • @Kalle 这是真的,但无关紧要。我的观点是,他的数据永远不应该处于那种状态。他绝不应该在 echoing 某些东西时使用stripslashes。如果他必须在显示之前取消转义,他就没有正确管理他的数据;当它们进出数据库时,它们应该自动转义/未转义。
  • @Meagar:这实际上非常相关,因为这就是他所要求的。是的,我当然同意你的看法,他应该避免这种情况。然而,这是他提出的直截了当的问题的旁注。
  • @Kalle “我该如何做这完全不必要和错误的事情”不是一个简单的问题,除非您满足于让这种无知和不良做法继续存在。我实际上关心的是帮助 OP 学习 一些东西。

标签: php stripslashes


【解决方案1】:

stripslashes 返回修改后的字符串,保持其参数不变。您必须将结果分配给变量:

$var = stripslashes($row['info']);

也就是说,你为什么要这样做?你几乎肯定不应该。没有理由去除来自数据库的数据的斜杠,除非您在插入数据时双重转义了斜杠。

【讨论】:

  • 呵呵,我打字的时候你回答了;)
【解决方案2】:

你的问题有点混乱。

stripslashes() 接受参数并将反斜杠符号转换为普通符号。此外,它不影响参数。它返回剥离版本。

所以 $result = stripslashes($source)$row["info"] 在你的情况下。

【讨论】:

    【解决方案3】:
    $var = stripslashes($row['info']);
    

    更正确。或者在字符串中,像这样使用它

    echo "something".stripslashes($row['info'])." some more thingy";  
    

    【讨论】:

      【解决方案4】:

      看起来,您使用 heredoc syntax 几乎是因为您的 {}。问题,是为什么?你是认真地这样展示你的结果的吗?:

      echo <<<my_results
      Info: {$row['info']}
      my_results;
      

      好吧,既然这样做很酷,那么这里就是你的解决方法:

      $row_info = stripslashes($row['info']);
      echo <<<my_results
      Info: {$row_info}
      my_results;
      

      但是,我不推荐这种方法。而是这样做:

      echo 'Info:' . stripslashes($row['info']);
      

      因为{stripslashes($row['info'])} 确实不起作用,而stripslashes({$row['info']}) 是一个轶事!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        • 2016-09-01
        • 1970-01-01
        • 2021-01-10
        相关资源
        最近更新 更多