我只是在研究如何使用HTML Purifier来确保用户输入的字符串(表示人名)是经过清理的。
我不想允许任何html标签,脚本,标记等-我只想要字母,数字和正常的标点符号字符。
HTML Purifier可用的选项数量之多令人望而生畏,据我所知,文档似乎没有乞求/中间或结尾
请参阅:http://htmlpurifier.org/docs
有一个简单的hello world在线教程,它展示了如何清理字符串,去除其中所有不好的东西。
我也在考虑只使用strip标签:
或者PHP的内置数据清理
发布于 2011-10-20 06:41:32
我一直在使用HTMLPurifier对富文本编辑器的输出进行清理,结果如下:
include_once('htmlpurifier/library/HTMLPurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$config->set('Core', 'Encoding', 'UTF-8');
$config->set('HTML', 'Doctype', 'HTML 4.01 Transitional');
if (defined('PURIFIER_CACHE')) {
$config->set('Cache', 'SerializerPath', PURIFIER_CACHE);
} else {
# Disable the cache entirely
$config->set('Cache', 'DefinitionImpl', null);
}
# Help out the Purifier a bit, until it develops this functionality
while (($cleaner = preg_replace('!<(em|strong)>(\s*)</\1>!', '$2', $input)) != $input) {
$input = $cleaner;
}
$filter = new HTMLPurifier($config);
$output = $filter->purify($input);
主要关注点:
HTMLPurifier_Config
的autoloader.$config
.$config->set()
.HTMLPurifier
的一个实例,将$config
传递给它。$filter->purify()
。<
然而,对于不需要在输出中允许任何HTML的东西来说,这完全是大材小用。
发布于 2010-04-27 16:12:06
您应该根据内容进行输入验证-例如,使用一些regexp作为名称
'/([A-Z][a-z]+[ ]?)+/' //ascii only, but not problematic to extend
这个验证应该能很好地完成这项工作。然后在页面上打印时转义输出,并使用首选的htmlspecialchars。
发布于 2010-04-30 19:33:37
您可以使用诸如htmlspecialchars()之类的方法来保留用户键入的字符,而无需浏览器进行解释。
https://stackoverflow.com/questions/2677578
复制相似问题