在PHP中的stripslashes问题

时间:2012-02-07 06:02:54

标签: php

当我在php中使用stripslashes但我没有得到确切的解决方案。我有下面的含义,我在我的代码中使用了这些 示例,如果我有像suresh\'s kuma\"r这样的表中的值 我试图以下列三种格式显示值,但没有人给出确切的值

1) value=<?=stripslashes($row[1])?> //output is suresh's
2) value='<?=stripslashes($row[1])?>' //output is suresh
3) value="<?=stripslashes($row[1])?>" //output is suresh's kuma

但我需要的确切输出是suresh's kuma"r

让我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您确定要使用stripslashes而不是addslashes吗?目的是引用“人物?

答案 1 :(得分:0)

这个问题与striplashes无关。如果我猜对了,问题在于你的例子引用打破html 字段属性;

我会根据您的信息手动回复您的$ row内容,向您显示:

  1. value = sures kumar - &gt;导致浏览器将其解释为value="sures" kumar
  2. value ='suresh'khumar - &gt;好吧,同样的故事value='sures' khumar
  3. value =“Suresh”Khumar - &gt;我能说什么......你知道演习
  4. 转义引号不会影响html,因为反斜杠在html中没有意义。 value="Suresh"value="Suresh\"都适用于浏览器,但您的名称将始终被浏览器解释为某个未知属性,只留下值中的第一部分。

    您可以执行的操作是htmlentities($row[1],ENT_QUOTES),以便它们在等效实体中转换(例如&quote;),打破您的值属性。请参阅manual

    另一个问题是,您首先在数据库中不应该使用反斜杠;这可能是由于您的提供商中存在magic_quotes,或者您手动传递addslashes()或其他错误的欺骗行为。如果要插入包含引号的数据库值,请使用数据库驱动程序提供的转义机制(mysql中的mysql_real_escape_string(),例如),或更好的工具(带有查询绑定的预处理语句)。

    首先应该使用striplashes删除所有斜杠并重新保存内容;但是,如果你没有为你的html格式化,那么问题会再次出现,如上所示。