我正在获取以下数据
<font color=\"#ff0000\" face=\"Verdana\" size=\"5\">hello there</font><br/>
我有两个问题
如何找出引号和其他内容是否已被转义(即已经在\或之前)?
我将把这个字符串存储到数据库表中的一个字段中。我是否应将所有HTML特殊字符转换为<
等实体应转换为<
答案 0 :(得分:1)
要将数据存储到数据库中,您无需转换HTML实体。你只需要在PHP中使用mysql_real_escape_string()
来转义MySQL中具有特殊含义的字符。更好的方法是使用像PDO和prepared statements这样的库(这将为您提供转义变量)。
要显示HTML数据(未转义),您可以使用stripslashes
之类的函数删除斜杠。旁注:你怎么不知道字符串是否被转义?如果它来自您的应用程序的另一部分,您应该知道。
答案 1 :(得分:0)
也许最好是安全而不是抱歉,只需使用stripslashes删除可能出现的任何斜杠。
答案 2 :(得分:0)
一个。我认为这个正则表达式将完成这项工作:
[^\\]["]
如果有任何“未转义的”,则此正则表达式将为true。您可以在第二组([“])中添加任意数量的字符,以确保它们被转义。
答案 3 :(得分:0)
<
char)答案 4 :(得分:0)
稍后您希望使用此HTML来构建网页,对吧?两者都转义引号并用实体替换HTML特殊字符只会为您提供额外的工作。所以我的建议是使用参数化查询来避免“是引号转义”问题,而不是替换特殊字符。
答案 5 :(得分:0)
你可以用:
$a=addslashes(stripslashes($a));
然后,两者都会被削减或未删除“/”将被削减。