首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP - HTML Purifier hello w<o>rld/world教程striptag

PHP - HTML Purifier hello w<o>rld/world教程striptag
EN

Stack Overflow用户
提问于 2010-04-21 02:17:57
回答 10查看 19K关注 0票数 17

我只是在研究如何使用HTML Purifier来确保用户输入的字符串(表示人名)是经过清理的。

我不想允许任何html标签,脚本,标记等-我只想要字母,数字和正常的标点符号字符。

HTML Purifier可用的选项数量之多令人望而生畏,据我所知,文档似乎没有乞求/中间或结尾

请参阅:http://htmlpurifier.org/docs

有一个简单的hello world在线教程,它展示了如何清理字符串,去除其中所有不好的东西。

我也在考虑只使用strip标签:

或者PHP的内置数据清理

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-10-20 06:41:32

我一直在使用HTMLPurifier对富文本编辑器的输出进行清理,结果如下:

代码语言:javascript
复制
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);

主要关注点:

  1. 根据需要包括HTMLPurifier_Config的autoloader.
  2. Create实例作为$config.
  3. Set配置设置,其中$config->set().
  4. Create是HTMLPurifier的一个实例,将$config传递给它。
  5. 对您的输入使用$filter->purify()

<

  1. >G218

然而,对于不需要在输出中允许任何HTML的东西来说,这完全是大材小用。

票数 9
EN

Stack Overflow用户

发布于 2010-04-27 16:12:06

您应该根据内容进行输入验证-例如,使用一些regexp作为名称

代码语言:javascript
复制
'/([A-Z][a-z]+[ ]?)+/' //ascii only, but not problematic to extend

这个验证应该能很好地完成这项工作。然后在页面上打印时转义输出,并使用首选的htmlspecialchars

票数 0
EN

Stack Overflow用户

发布于 2010-04-30 19:33:37

您可以使用诸如htmlspecialchars()之类的方法来保留用户键入的字符,而无需浏览器进行解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2677578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档