首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清理HTML输入

清理HTML输入
EN

Stack Overflow用户
提问于 2011-04-01 19:27:01
回答 5查看 16K关注 0票数 8

我正在考虑添加一个富文本编辑器,允许非程序员更改文本的外观。但是,有一个问题是,如果标记不正确,可能会扭曲呈现页面的布局。什么是清理html的好的轻量级方法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-01 19:31:48

你将不得不在好的和轻量级之间做出选择。推荐的选择是'HTMLPurifier',因为它提供了安全的默认设置。作为更快的替代方法,通常建议使用“htmLawed”。

另请参阅HTMLPurifier作者的这篇相当客观的概述:http://htmlpurifier.org/comparison

票数 20
EN

Stack Overflow用户

发布于 2011-04-01 19:29:09

我真的很喜欢,它允许您指定在您的HTML代码中允许哪些标记和属性,并生成有效的HTML.

票数 6
EN

Stack Overflow用户

发布于 2011-04-01 19:28:23

使用BB码(或者像这里这样),否则机会非常小。示例函数...

代码语言:javascript
复制
function parse($string){

    $pattern = array(
    "/\[url\](.*?)\[\/url\]/",
    "/\[img\](.*?)\[\/img\]/",
    "/\[img\=(.*?)\](.*?)\[\/img\]/",
    "/\[url\=(.*?)\](.*?)\[\/url\]/",
    "/\[red\](.*?)\[\/red\]/",
    "/\[b\](.*?)\[\/b\]/",
    "/\[h(.*?)\](.*?)\[\/h(.*?)\]/",
    "/\[p\](.*?)\[\/p\]/",    
    "/\[php\](.*?)\[\/php\]/is"
    );

    $replacement = array(
    '<a href="\\1">\\1</a>',
    '<img alt="" src="\\1"/>',
    '<img alt="" class="\\1" src="\\2"/>',
    '<a rel="nofollow" target="_blank" href="\\1">\\2</a>',
    '<span style="color:#ff0000;">\\1</span>',
    '<span style="font-weight:bold;">\\1</span>',
    '<h\\1>\\2</h\\3>',
    '<p>\\1</p>',
    '<pre><code class="php">\\1</code></pre>'
    );

    $string = preg_replace($pattern, $replacement, $string);

    $string = nl2br($string);

    return $string;

}

..。

代码语言:javascript
复制
echo parse("[h2]Lorem Ipsum[/h2][p]Dolor sit amet[/p]");

结果...

代码语言:javascript
复制
<h2>Lorem Ipsum</h2><p>Dolor sit amet</p>

或者只使用HTML Purifier :)

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

https://stackoverflow.com/questions/5512712

复制
相关文章

相似问题

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