Php 查找字符串是否已转义?
我得到以下数据Php 查找字符串是否已转义?,php,Php,我得到以下数据 <font color=\"#ff0000\" face=\"Verdana\" size=\"5\">hello there</font><br/> 你好 我有两个问题 如何查找引号和其他内容是否已转义(即,是否已在\之前) 我将把这个字符串存储到数据库表中的一个字段中。我是否应该将所有HTML特殊字符转换为实体,如,也许最好是安全的,而不是抱歉,只使用它来删除可能存在的任何斜杠。a。我认为这个正则表达式会起作用: [^\\]["]
<font color=\"#ff0000\" face=\"Verdana\" size=\"5\">hello there</font><br/>
你好
我有两个问题
- 如何查找引号和其他内容是否已转义(即,是否已在\之前)
- 我将把这个字符串存储到数据库表中的一个字段中。我是否应该将所有HTML特殊字符转换为实体,如
,也许最好是安全的,而不是抱歉,只使用它来删除可能存在的任何斜杠。a。我认为这个正则表达式会起作用:
如果有任何“未转义”,则此正则表达式为真。您可以向第二个集合([“])中添加任意数量的字符,以确保它们已转义。[^\\]["]
- 可以删除斜杠,然后再次添加斜杠
- 您无需对实体进行编码即可将其存储在数据库中。
只有在将其以HTML格式打印为文字字符串(而不是标记)时,才需要它(也就是说,您希望在以后的某个时候看到,您希望此HTML用于构建网页,对吗?转义引号和用实体替换HTML特殊字符都只会给您带来额外的工作。因此,我的建议是使用参数化查询来避免“转义引号了吗?”问题,不要替换特殊字符。要将数据存储到数据库中,您不需要转换HTML实体。您只需要使用PHP中的
MySQL\u real\u escape\u string()(这将负责为您转义变量) 对于显示HTML数据(未转义),您可以使用类似于
的函数删除斜线。旁注:为什么您不知道字符串是否转义?如果它来自应用程序的另一个部分,您应该知道。您可以使用:stripslashes
$a=addslashes(stripslashes($a));
然后,斜杠或非斜杠“/”都将被斜杠。当然,使用stripslashes()是规范化数据的唯一合理方法,但您必须“对实体进行编码以将其存储在数据库中”“-但无论何时在PHP之外发送数据,都必须使用适合数据目的地的方法-例如,对于数据库,使用绑定参数或mysql\u escape\u string()或equalite(addslashes不是同一回事)。这就是为什么不推荐使用magic_引号的原因。为了阻止人们入侵您的数据/破坏您的网站/破坏您的数据/窃取机密信息。我知道它应该被删除,但作为HTML的一部分打印,而不是存储。要存储,您不需要任何东西,除了mysql\u real\u escape\u字符串“除了mysql\u real\u escape\u字符串”-上一次的回答是什么?