【问题标题】:php stripslashes leaves one slashphp stripslashes 留下一个斜线
【发布时间】:2012-01-12 23:58:13
【问题描述】:

就像主题说的那样,我有一些 $_POST 数据需要删除所有斜线。但是,它会留下一个,当表单上有错误时,它会将发布数据打印回用户,因此他们不必重新输入。当他们再次提交页面时,每次提交错误时,斜线的数量都会大大增加。我的代码很简单,使用stripslashes($_POST['first']),然后发回错误。我也尝试str_replace 摆脱最后一个\ 但这不起作用。有什么想法吗?

代码编辑--------

   $first =  stripslashes($_POST[f_name]); 
   $first = str_replace('\\' , '', $_POST[f_name]);

【问题讨论】:

  • 我们可以看看你的代码吗?

标签: php stripslashes


【解决方案1】:

stripslashes() 只去除第一个连续的反斜杠(当它们连续时),因为反斜杠用于转义反斜杠。

你应该使用str_replace("\\", "", $_POST['first']);

更新如果您要删除的是前斜线, 使用str_replace("/", "", $_POST['first']);

【讨论】:

  • 我已经用过那个/试过了,它并没有摆脱最后一个/
  • 等等,它不应该去掉前斜线...只有反斜线。
【解决方案2】:

你启用了magic_quotes 吗? stripslashes 只会删除用于转义字符的 \。因此,如果您想在文本中使用 \,则需要使用两个来转义它:\。在这种情况下,两个 \ 将转换为一个带有斜杠的 \。在进行任何处理之前执行 print_r($_POST) 以查看 POST 中的实际内容。

【讨论】:

    【解决方案3】:

    Disabling magic quotes 应该可以解决您的问题。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题并使用了一个非常粗略的解决方案....我刚刚连续两次实现了 stripslashes 函数,或者在你的情况下:

      $first_temp =  stripslashes($_POST[f_name]);
      $first = stripslashes($first_temp);  
      

      粗制滥造,但对我有用!

      【讨论】:

        【解决方案5】:

        我认为您的帖子数组包含从数据库中获取的内容,例如“isn\'t orWould\'t”以更新到数据库。然后,当您将数据读取到字段使用时,您会做一件事

        条纹(数据['description_to_textarea'])

        问题修复。

        【讨论】:

          猜你喜欢
          • 2010-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多