我喜欢的工作上设置高亮的过滤器,用于php的网站。(我采用cake,这将是一个设置高亮的助手) 我有一些要求。

灵感的说明可以嵌套。这样的东西一样,是有效的。

[block]  
    [block]  
    [/block]  
    [block]  
        [block]  
        [/block]  
    [/block]  
[/block]  

灵感的说明可以有0或多个参数。

Exemple:

[video: url="url", width="500", height="500"]Title[/video]

灵感的说明可能具有多个行为。

让我们说, [url]text[/url] 会转变到 [url:url="text"]text[/url] 或视频设置高亮将能够选择之间youtube、土豆网....

我认为,它涵盖大部分我的需要。我alreay做了一些与regex.但我最大的问题是相匹配参数。事实上,我得到了嵌套的设置高亮工作,并设置高亮0参数。但是,当我增加了一个regex匹配参数,它不匹配套设置高亮正确。

"\[($tag)(=.*)\"\](.*)\[\/\1\]" //不是你的错* 但是非gready匹配

我没有完成regex与我的权利,但是我有一些东西,看上去那样(上述)。

所以有一种方式相匹配设置高亮有效地与regex或别的东西。我唯一能想到的是使用游客的模式和分裂我的文字与每个可能的标签,这样我可以有更多的控制我的文本分析,并且我可能可能验证我的文档,所以,如果输入的文本没有有效设置高亮.我可以通知用户用一个错误的前节省的任何东西。

我会用sablecc创造我的文本分析程序。http://sablecc.org/

任何更好的主意吗?或者任何可能导致一个有效灵活的设置高亮析器?

谢谢你,对不起,我的英语不好...

有帮助吗?

解决方案

有两个 pecl 设置高亮析图书馆。软件的硬盘没有足够的创新年的工作在你自己的。

如果没有这些都是一种选择,我会集中精力转向设置高亮成一个有效的XML string,然后利用你最喜欢的XML分析程序。非常非常粗略的想法,但

  1. 运行代码通过htmlspecialchars逃避任何实体需要逃避

  2. 改变所有[和]符入 < 并>分别

  3. 不要忘记帐户的结肠在这样的情况下[tagname:

如果设置高亮是嵌套正确的,你应该可以通过这串成一种XML分析的对象(因,DOMDocument,等等。)

其他提示

有几个现有的库来解析BB代码,它可能会更容易寻找到那些不是试图推出自己的:

下面是一对夫妇,我敢肯定有更多,如果你环顾四周:点击 PECL设置高亮结果 PEAR HTML_BBCodeParser

一直在寻找到的bbcode解析器自己。他们大多使用正则表达式和PHP4和PHP 5.2+产生错误或根本就不工作。 PECL设置高亮和PEAR HTML_BBCodeParser似乎没有保持任何更多的(2012年末),并且不容易在共享主机的设置我有工作装。 StringParser_BBCode 与5.2+一些小的调整,但该方法的工作原理加入新的标签是笨拙,这是过去的2008年更新。

埋的Bing搜索的页面4(我越来越绝望),我发现 jBBCode ,出现新的上并要求PHP 5.3。 MIT LISENCE。我还没有尝试构建自定义的标签,但到目前为止,这是唯一一个我已经试过了工作了与PHP 5.3共享的托管帐户的开箱。

  

回应:“任何更好的主意” (我假定这是一个邀请不仅改进过特定的bbcode-建议)

我们最近查了一下打算BB代码的路线,并决定使用 htmlpurifier 代替。这一决定是部分地基于所述(诚然可能偏压)由htmlpurifier组此处列出的各种方法之间的比较和的bbcode的讨论(同样,由htmlpurifer组)这里

和备案,我认为你的英语非常好。我敢肯定,这大大优于我可以用你的母语做。

preg_split()标志使用PREG_DELIM_CAPTURE分割源代码转换标签和非标记。然后标签遍历开放块(即,当你看到打开标签,将其添加到阵列。当你看到的结束标记,除去从该阵列的端部元件,直到结束标记匹配开始标记。)

的保持堆
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top