Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找字符串是否已转义?_Php - Fatal编程技术网

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字符串”-上一次的回答是什么?