我正在从csv文件编写导入脚本,我需要验证数据,大多数数据都是字符串,所以我想使用像Jinput这样的东西来清理它。
Joomla是否已经为此目的提供了一些东西?
理想的是拥有像
这样的东西$field = JSanitizer::get($data/*array with data*/, "fieldname"/*name of field*/,
'string'/*type of data*/, 'null'/*default value*/);
此外,我还需要它在Joomla 2.5和3.0版本中工作。
答案 0 :(得分:4)
您可能正在寻找JFilterInput::clean()
这将如下工作:
$field = JFilterInput::clean($data[$fieldname], 'filter');
这没有提供设置默认值的方法,因此您必须在之后处理。如果您编写自定义组件,这应该与通常使用JInput以及JForm元素执行的过滤相同。
我似乎无法找到所有过滤器的良好列表,但您可以在此处查看旧版本的源代码:http://docs.joomla.org/API16:JFilterInput/clean。最新版本的函数从第162行开始:https://github.com/joomla/joomla-cms/blob/master/libraries/joomla/filter/input.php
另请注意,您希望自己从数据阵列中提取字段。您实际上可以在没有过滤器设置的情况下将整个阵列发送给它,它至少应检查整个阵列是否存在XSS和其他问题。如果你想要对整数等进行更细微的过滤,最好逐字段地进行。
答案 1 :(得分:2)
$field = JFilterInput::clean($data[$fieldname], 'filter');
会发出通知 “不应静态调用非静态方法JFilterInput :: clean()” 您应首先使用JFilterInput :: getInstance()启动它并动态调用它,例如:
$field = JFilterInput::getInstance()->clean($data[$fieldname], 'filter');
汤姆
答案 2 :(得分:0)
在解析文件之前,您应该阅读Joomla docs并使用类似的内容:
$string = JRequest::getString( 'description' );
这应该适用于自1.5以来的所有版本
有一些github项目要实现html purifier作为插件,我发现this,但没有机会测试它,但它应该可以工作。