0

我正在从 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 版本中都可以工作。

4

3 回答 3

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 和其他问题。如果您想要对整数等进行更细微的过滤,最好逐个字段进行。

于 2013-09-10T09:03:43.157 回答
2
$field = JFilterInput::clean($data[$fieldname], 'filter');

将触发通知“不应静态调用非静态方法 JFilterInput::clean()”您应该首先使用 JFilterInput::getInstance() 启动它并动态调用它,例如:

$field = JFilterInput::getInstance()->clean($data[$fieldname], 'filter');

汤姆

于 2016-03-12T18:05:49.880 回答
0

在解析文件之前,您应该阅读Joomla 文档并使用类似的东西:
$string = JRequest::getString( 'description' );
这应该适用于自 1.5 以来的所有版本

有一些 github 项目将html 净化器作为插件实现,我发现了这个,但没有机会测试它,但它应该可以工作。

于 2013-09-10T08:02:36.083 回答