标签: bbcode

解析PHPBB3的BB代码

希望使用PHPBB3的函数解析PHP中的BB代码.我到目前为止:

<?php
    include_once("../../forum/includes/functions_content.php");

    $text = "[b]bold text here[/b] not bold here";
    $uid = $bitfield = $options = '';

    echo("parsing");
    echo generate_text_for_storage($text, $uid, $bitfield, $options, true, true, true);
    echo("finished");
?>
Run Code Online (Sandbox Code Playgroud)

然而它回声parsing但在此之后不会继续.我期待输出符合以下几点:

<b>bold text here</b> not bold here
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢!

编辑

没有答案仍然有效.我正在寻找一个独立的 php页面,它使用PHPBB3的BBCode解析器将BB代码字符串转换为HTML字符串.

php bbcode phpbb3

8
推荐指数
1
解决办法
2553
查看次数

如何将HTML转换为BBCode

我维护一个公告板,以HTML格式保存富文本消息.现在我需要将所有这些消息迁移到需要BBCode表示HTML的Joomla Kunena公告板中.

是否有任何库可以干净地将HTML转换为BBCode.有很多脚本用于BBCode到HTML但不是相反的方式.

谢谢...

html php bbcode

7
推荐指数
1
解决办法
5655
查看次数

为什么我应该在评论表单中使用BBCode而不是HTML?

我在PHP中编写了一个注释解析函数.

由于BBCode不是真正的标记语言,我从不喜欢写作风格.
所以我让访问者能够在评论表单中使用基本的HTML代码.
在发布时,PHP将检查不允许的和无效的标签/属性,并替换或删除它们.

我相信它做的工作与BBCode完全相同.

如果这是真的,为什么有BBCode?BBcode比HTML更有优势吗?

更新

单色回答

如果您确信HTML过滤器足够安全,那么您应该没问题

好吧,我不自信地编写过滤器,但是有一些顶级的过滤器,如PHP Simple HTML DOM Parser,HTML Purifier,htmLawed ......

BBCode由UBB开发并且仍在广泛使用,例如phpBB.

来自UBB/phpBB的开发人员对他们编写完美HTML过滤器的技巧没​​有信心吗?(我猜不会)

另外,就像StackOverflow使用的Markdown一样......如果HTML + Parser完成这项工作,为什么要发明另一种"语言"呢?(除了保存几位......)

html security validation bbcode

7
推荐指数
2
解决办法
2406
查看次数

是否存在适用于Android的轻量级标记语言库?

假设我想渲染/呈现以某种形式传输的文本lightweight markup language.是否有任何现成的库Android,它们以轻量级标记语言作为输入文本并很好地呈现它?当我说轻量级标记语言时,我指的是Markdown(http://en.wikipedia.org/wiki/Markdown)或类似的东西.

java markdown android bbcode creole

6
推荐指数
2
解决办法
3435
查看次数

使用PEG解析器进行BBCode解析:pegjs还是......什么?

我有一个bbcode - > html转换器,它响应textarea中的change事件.目前,这是使用一系列正则表达式完成的,并且存在许多病理情况.我一直想在这个语法上磨铅笔,但不想进入牦牛剃须.但是......最近我开始意识到pegjs,这似乎是PEG解析器生成的一个非常完整的实现.我已经指定了大部分语法,但现在我想知道这是否适合使用完整的解析器.

我的具体问题是:

  1. 由于我的应用程序依赖于将我能够转换为HTML并将其余内容保留为原始文本,因此使用可能在语法错误上失败的解析器实现bbcode是否有意义?例如:[url=/foo/bar]click me![/url]一旦输入关闭标记上的结束括号,肯定会成功.但是在此期间用户会看到什么?使用正则表达式,我可以忽略不匹配的东西,并将其视为普通文本以用于预览目的.使用正式语法,我不知道这是否可行,因为我依赖于从解析树创建HTML以及解析失败的原因是什么?

  2. 我不清楚应该在哪里进行转换.在正式的基于lex/yacc的解析器中,我将有头文件和符号表示节点类型.在pegjs中,我得到了带有节点文本的嵌套数组.我可以将翻译后的代码作为pegjs生成的解析器的一个动作发出,但是它似乎是一种将解析器和发射器组合在一起的代码气味.但是,如果我打电话PEG.parse.parse(),我会收到这样的话:

[
       [
          "[",
          "img",
          "",
          [
             "/",
             "f",
             "o",
             "o",
             "/",
             "b",
             "a",
             "r"
          ],
          "",
          "]"
       ],
       [
          "[/",
          "img",
          "]"
       ]
    ]
Run Code Online (Sandbox Code Playgroud)

给出如下语法:

document
   = (open_tag / close_tag / new_line / text)*

open_tag
   = ("[" tag_name "="? tag_data? tag_attributes? "]")


close_tag
   = ("[/" tag_name "]") 

text
   = non_tag+

non_tag
   = [\n\[\]]

new_line
   = ("\r\n" / "\n")
Run Code Online (Sandbox Code Playgroud)

当然,我正在缩写语法,但你明白了.所以,如果你注意到,数组数组中没有上下文信息告诉我我有什么样的节点,即使解析器已经完成了这个,我还是要再次进行字符串比较.我希望在解析期间可以定义回调并使用操作来运行它们,但是网上很少有关于如何做到这一点的信息.

我吠叫错了树吗?我应该回到正则表达式扫描并忘记解析吗?

谢谢

javascript parsing bbcode peg pegjs

6
推荐指数
1
解决办法
1247
查看次数

CKEditor BBCode插件中的自定义标签

我正在使用CKEditorBBCode插件,我需要添加自定义标签,如spoiler标签和另一个可以链接到网站用户的个人资料.
spoiler标签将像blockquote标签一样工作:单击按钮并获取代码.我复制blockquote/plugin.js和更改所有blockquote字符串spoiler,并quotespoil.然后我添加extraPlugins: 'spoiler'了配置和工具栏上的一个按钮.它看起来正确,但它生成错误的代码.
例如,如果在选择文本后单击blockquote按钮,则会生成以下代码:

[quote]some text[/quote]
Run Code Online (Sandbox Code Playgroud)

但是当我点击我的新按钮时,我得到以下代码:

<p>
    <spoiler>
    <p>
        !!!</p>
    </spoiler></p>
Run Code Online (Sandbox Code Playgroud)

所以它不起作用.

我还想创建一个链接到用户的按钮.它应该是这样的:点击按钮后,会出现一个带有搜索字段的对话框(AJAX不是问题),结果将是用户列表; 当选择用户并OK单击按钮时,它将生成如下代码:

[user=1]Admin[/user]
Run Code Online (Sandbox Code Playgroud)

1 - 用户ID,管理员 - 他的名字.

jquery plugins bbcode ckeditor

6
推荐指数
1
解决办法
944
查看次数

避免使用BBCode输入和HTML输出的XSS

我目前正在一个网站上工作,用户可以用很少的格式编写文章(如粗体,斜体,列表......).我正在使用一个框架:CodeIgniter.

我是初学者,我听说过一些关于XSS的东西.我想知道您对我的实施情况有何看法.我读到了这个主题: 用PHP清理用户输入的最佳方法是什么?

1)用户写他的文章,用BBCode格式化.我正在使用SCEditor.

2)当将其保存到数据库中时,我使用htmlspecialchars()来过滤任何可疑的HTML标记.我在保存数据或显示数据时应该这样做吗?

3)当我想在网站上显示文章时(例如用于其他用途),我将BBCode标签转换为HTML标签.

这是一种正确的方法吗?我是否避免使用XSS?

我显然对这些建议和建议持开放态度.

谢谢你的回答

html xss codeigniter bbcode htmlspecialchars

6
推荐指数
1
解决办法
896
查看次数

将MarkItUp富文本编辑器预览与ASP.NET MVC应用程序集成

我正在测试MarkItUp!MVC应用程序中的富文本编辑器,除预览外,一切都运行良好.在设置(set.js)中,有一个previewParserPath属性(" BBCode解析器的路径").在与MVC应用程序的正确集成方面,我不确定这是在寻找什么.

我相信这个属性允许渲染文本显示为HTML而不是[code][/code]等等.

在我的控制器中,我创建了以下内容:

[AcceptVerbs(HttpVerbs.Get)]
[ValidateInput(false)]
public String ParseCode(string toBeParsed)
{
    return BBCode.ToHtml(toBeParsed);
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc markup jquery bbcode markitup

5
推荐指数
1
解决办法
1902
查看次数

没有正则表达式的BBCode解析器?

我正在寻找Javascript或PHP中的BBCode解析器,而无需使用Regex.谁能建议我一个好人?

javascript php parsing bbcode

5
推荐指数
1
解决办法
705
查看次数

处理剧透BBcode Android

我正在为一个论坛开发一个应用程序.

我需要一个像Tapatalk那样的剧透按钮

在此输入图像描述

隐藏文本部分,仅在用户单击按钮时显示.

我收到了帖子的所有文字,包括剧透BBCode.我已设法通过以下正则表达式获取扰流板的内容:

\[SPOILER\](.+?)\[\/SPOILER\]
Run Code Online (Sandbox Code Playgroud)

我的问题是我想添加一个剧透按钮,但我的所有文本都是类似HTML的,因为每个对象(图像,链接,格式代码等等)都是用HTML翻译的,然后由Android用Html方法处理.fromHtml().

这是解析方法,将BBCode"转换"为HTML:

private static String parsePostContent(String text){
    String html = text;

    Map<String,String> bbMap = new HashMap<>();

    bbMap.put("(\r\n|\r|\n|\n\r)", "<br/>");
    bbMap.put("\\[b\\](.+?)\\[/b\\]", "<strong>$1</strong>");
    bbMap.put("\\[i\\](.+?)\\[/i\\]", "<span style='font-style:italic;'>$1</span>");
    bbMap.put("\\[u\\](.+?)\\[/u\\]", "<span style='text-decoration:underline;'>$1</span>");
    bbMap.put("\\[h1\\](.+?)\\[/h1\\]", "<h1>$1</h1>");
    bbMap.put("\\[h2\\](.+?)\\[/h2\\]", "<h2>$1</h2>");
    bbMap.put("\\[h3\\](.+?)\\[/h3\\]", "<h3>$1</h3>");
    bbMap.put("\\[h4\\](.+?)\\[/h4\\]", "<h4>$1</h4>");
    bbMap.put("\\[h5\\](.+?)\\[/h5\\]", "<h5>$1</h5>");
    bbMap.put("\\[h6\\](.+?)\\[/h6\\]", "<h6>$1</h6>");
    bbMap.put("\\[quote\\](.+?)\\[/quote\\]", "<blockquote>$1</blockquote>");
    bbMap.put("(?s)^\\[quote name=\"([^\"]+)\".*\\](.+)\\[\\/quote\\]", "<span style='font-style:italic;'>Citazione di: $1</span> <blockquote>$2</blockquote>");
    bbMap.put("\\[p\\](.+?)\\[/p\\]", "<p>$1</p>");
    bbMap.put("\\[p=(.+?),(.+?)\\](.+?)\\[/p\\]", "<p style='text-indent:$1px;line-height:$2%;'>$3</p>");
    bbMap.put("\\[center\\](.+?)\\[/center\\]", "<div align='center'>$1");
    bbMap.put("\\[align=(.+?)\\](.+?)\\[/align\\]", "<div align='$1'>$2");
    bbMap.put("\\[color=(.+?)\\](.+?)\\[/color\\]", "<span style='color:$1;'>$2</span>");
    bbMap.put("\\[size=(.+?)\\](.+?)\\[/size\\]", "<span style='font-size:$1;'>$2</span>");
    bbMap.put("\\[img\\](.+?)\\[/img\\]", "<img src='$1' />");
    bbMap.put("\\[img=(.+?),(.+?)\\](.+?)\\[/img\\]", "<img width='$1' …
Run Code Online (Sandbox Code Playgroud)

html regex android bbcode

5
推荐指数
1
解决办法
824
查看次数