查找字符串是否已经转义?

时间:2011-08-19 08:43:48

标签: php

我正在获取以下数据

<font color=\"#ff0000\" face=\"Verdana\" size=\"5\">hello there</font><br/>

我有两个问题

  • 如何找出引号和其他内容是否已被转义(即已经在\或之前)?

  • 我将把这个字符串存储到数据库表中的一个字段中。我是否应将所有HTML特殊字符转换为<等实体应转换为&lt

6 个答案:

答案 0 :(得分:1)

要将数据存储到数据库中,您无需转换HTML实体。你只需要在PHP中使用mysql_real_escape_string()来转义MySQL中具有特殊含义的字符。更好的方法是使用像PDOprepared statements这样的库(这将为您提供转义变量)。

要显示HTML数据(未转义),您可以使用stripslashes之类的函数删除斜杠。旁注:你怎么不知道字符串是否被转义?如果它来自您的应用程序的另一部分,您应该知道。

答案 1 :(得分:0)

也许最好是安全而不是抱歉,只需使用stripslashes删除可能出现的任何斜杠。

答案 2 :(得分:0)

一个。我认为这个正则表达式将完成这项工作:

[^\\]["]

如果有任何“未转义的”,则此正则表达式将为true。您可以在第二组([“])中添加任意数量的字符,以确保它们被转义。

答案 3 :(得分:0)

  • 您可以删除斜线并重新添加
  • 您无需对实体进行编码即可将其存储在DataBase中 只有当你将它打印成HTML作为升级字符串(而不是标签)时才需要它(即你想要看< char)

答案 4 :(得分:0)

稍后您希望使用此HTML来构建网页,对吧?两者都转义引号并用实体替换HTML特殊字符只会为您提供额外的工作。所以我的建议是使用参数化查询来避免“是引号转义”问题,而不是替换特殊字符。

答案 5 :(得分:0)

你可以用:

$a=addslashes(stripslashes($a));
然后,两者都会被削减或未删除“/”将被削减。