当前位置: 首页 > 面试题库 >

用php清理JSON

弘靖琪
2023-03-14
问题内容

我总是使用filter_var($ var,FILTER,FLAG); 当我从$ _GET,$ _ POST等获取数据时,但是现在此数据是JSON字符串,但是我没有找到任何过滤器来净化JSON。有人知道如何实现此过滤器吗?

PHP filter_var():http://php.net/manual/en/function.filter-
var.php

PHP筛选器常量:http :
//php.net/manual/zh/filter.filters.sanitize.php


问题答案:

首先将JSON解析为PHP数组,然后像处理常规请求内容一样对数组中的每个值进行过滤,您可以将JSON键映射到原理图过滤器和标志/选项,例如

$filters = array(
    'email'=>FILTER_VALIDATE_EMAIL, 
    'url'=>FILTER_VALIDATE_URL, 
    'name'=>FILTER_SANITIZE_STRING,
    'address'=>FILTER_SANITIZE_STRING
);
$options = array(
    'email'=>array(
        'flags'=>FILTER_NULL_ON_FAILURE
    ), 
    'url'=>array(
        'flags'=>FILTER_NULL_ON_FAILURE
    ), 
    //... and so on
);
$inputs = json_decode($your_json_data);
$filtered = array();
foreach($inputs as $key=>$value) {
     $filtered[$key] = filter_var($value, $filters[$key], $options[$key]);
}


 类似资料:
  • 问题内容: 在我的网站上,我使用PHP会话。会话信息存储在我的./session路径中的文件中。几个月后,我发现这些会话文件从未删除,到目前为止,此目录中有145.000个文件。 这些应该如何清理?我是否必须以编程方式执行此操作,还是我可以在可以自动进行此清理的地方使用的设置? 编辑 忘了提及:该站点在提供程序上运行,因此我无权访问命令行。我确实有ftp访问权限,但是会话文件属于另一个用户(我猜该

  • 问题内容: 如何通过PHP清理$ _GET -variables中的数据? 我只对GET by中的一个变量进行了消毒。我不确定是否应该清理所有内容,因为上次将数据放入Postgres时,使用可以最轻松地解决问题。 问题答案: 如何通过PHP清理$ _GET -variables中的数据? 您 不 清除$ _GET中的数据。这是PHP脚本中的一种常见方法,但是完全错误*。 所有变量都应保持纯文本格式

  • 问题内容: 是否有某个功能全面的功能可以很好地用于清理用户针对SQL注入和XSS攻击的输入,同时仍然允许某些类型的HTML标签? 问题答案: 常见的误解是可以过滤用户输入。PHP甚至有一个(现在已弃用的)“功能”,称为magic-quotes,它基于此思想。废话 忘记过滤(或清洁,或任何人称呼它)。 为避免出现问题,您应该做的事情很简单:每当将字符串嵌入外部代码中时,都必须根据该语言的规则对其进行

  • 问题内容: 完全陷入了困境-PHP的新手,并进行了简单的表单提交(创建帐户页面)以发送到mySQL数据库,因此对问题的宽恕表示歉意。 我不确定在发送数据之前如何正确验证和清除数据。但是我在插入数据库时​​使用的是PDO和占位符,所以我认为这一方面已经涵盖了。 这被发送到一个名为createaccount.php的单独的php文件,该文件运行用户名检查,如果成功运行,则将一个字段发送到我的dbHan

  • 问题内容: 我有一个网站,用户可以使用TinyMCE的自定义实现发布内容(如论坛,评论等)。他们中的许多人喜欢从Word复制和粘贴,这意味着他们的输入通常带有大量相关联的MS内联格式。 我无法摆脱,因为TinyMCE的某些格式依赖于span标签,而且我不能(也不想)强迫用户使用TinyMCE的“从Word粘贴”功能(无论如何似乎都行得通)。 有谁知道可以帮我解决这个问题的库/类/函数?尽管我找不到

  • Clean,清理。把未跟踪的文件清理掉。 练习 1,在项目下面新建一个文件,名字是 demo.md。 touch demo.md 然后查看状态,会返回: On branch master Untracked files: (use "git add <file>..." to include in what will be committed) demo.md nothing a