打印

关于表格的正则表达式讨论(已实现,特别感谢lexrus)

     看过许多UBB代码,包括JS,ASP,JSP的,一直没发现表格的UBB,虽然可以直接用HTML模式实现相同表格功能,但对于某些开放的站点来说开放HTML模式终究是不合适的,故一直想实现表格的UBB。

     我的设想是在HTML编辑器(HTML,FRONTPAGE,DW)中作好表格,把<替换为[,>替换为],直接复制HTML并提交发布。

     可惜经过实践,发现很难。因为表格的HTML标记和其他元素的HTML标记差别很明显,主要原因TD,TR,特别是TABLE都能嵌套。其实我遇到的关键问题在于我不会写 不包含某个单词或语句(非单字符)的正则 ,譬如下面标记
引用:
[TABLE][TR]  [TD]哈哈[TABLE][TR][TD]的[/TD][/TR][/TABLE][/TD][/TR][/TABLE]
你要匹配正确[TD]*[/TD]你就得必须保证*不包括[TABLE][TR][TD]等,注意不能用[^\[]*?啊,因为用他无法匹配正确的[/TD]的,所以问题在与我怎么保证这个*不包括[TABLE][TR][TD]呢,(我不会写)。所以我:

退一步,先用\[td[^\]]*?\][^\[]*?\[table找到最后一个(其实最内层的)表格,然后把最内层的表格转为HTML标记,然后循环从头开始再来一次,一直到所有标记被替换。这个理论上是可以实现的。我用JSP正在实验,需要时间,希望有兴趣朋友用ASP,PHP实验一下。

因为我急用,所以我又退了一步,就是直接查找][TABLE]等标记然后替换,有4个表达式,[TABLE][TR][TD]、[/TD][/TR][TR][TD]、[/TD][TD]、[/TD][/TR][TABLE] ,大家知道,UBB需要把/R/N替换成<BR>的,于是我用上面作出的正则查找并替换掉所有[TABLE]和[TR]和[TD]和[/TD]和[/TR]和[/TABLE]中的换行。其实这个表达式比下面表达式就多了这个替换换行功能,其不足之处是很明显的,就是不能完善的剔除非配套的标记,必须保证所有TABLE标记是正确配套的(有TBODY的再改改就是了),否则乱套。总 这一步我实践还不错。

再退一步,其实没法退了,就是直接单个查找替换[TABLE]等标记,这是最苯的方法了,也是效果最不好的,因为大家知道在HTML编辑器里的表格标记中好多换行的,而UBB是为换行转为<BR>的,所以这个方法实现了会发现好多空行的,而且这个方法和上面那一步一个共同缺点就是更不能剔除非配套标记。


附我写的退一步后的正则:(我用JSP)
引用:
\\[(table)([^\\[]*?)\\][^\\[]*?\\[tr\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[\\/tr\\][^\\[]*?\\[tr\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[td([^\\[]*)\\]|\\[\\/(td)\\][^\\[]*?\\[\\/tr\\][^\\[]*?\\[\\/table\\]
我想如果是管理员发布信息什么的,能保证表格标记的正确的话用这个还可以的。其实如果有人想捣乱的话,再严谨的UBB也不能防止的啊。
欢迎有兴趣者来此讨论,提出更好建议,打造最好最全的UBB。
这里的列表UBB怎么不能用?

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

没有玩正则的么?

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

技术区有相关文章
搜索旧帖也有一些

我没有具体做过 ubb 不太清楚
也可以pm 给其他版主 leXrus 和 panliu 88 他们做过

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

引用:
[TABLE][TR] [TD]哈哈[TABLE][TR][TD]的[/TD][/TR][/TABLE][/TD][/TR][/TABLE]
这么复杂, 谁还敢用呢~

建议用这样的,处理起来很方便:
复制内容到剪贴板
代码:
[table header=both]
      2003年     2004年     2005年
产量     100     120     125
利润     111     232      234
投资     12     223     235
[table]
找稳定的工作和老婆...

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

     lexrus兄,关于表格UBB,我的构思是在HTML编辑器里生成表格(可以随便嵌套),这个很简单吧,然后替换所有<为[,所有>为],这个很简单吧,然后复制到TEXTAREA里发布,简单吧,而且在编辑器里你随便编辑表格特效,而你的建议有好多弊端的哟,表格的许多特点受到很多限制,这样就没了应用表格的必要了。

希望有人能通过下面方式实现这个功能
引用:
先用\[td[^\]]*?\][^\[]*?\[table找到最后一个(其实最内层的)表格,然后把最内层的表格转为HTML标记,然后循环从头开始再来一次,一直到所有标记被替换。这个理论上是可以实现的。我用JSP正在实验,需要时间,希望有兴趣朋友用ASP,PHP实验一下。

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

这样写符合你的要求吗?

 提示:您可以先修改部分代码再运行
找稳定的工作和老婆...

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

谢谢lexrus兄,终于找到  “不包含某个单词或语句(非单字符)的正则”  了。

你上面的代码针对错误的表格还不能很完善的解决,但我想也没有更好方法解决错误表格导致的混乱页面,这是表格自己的特点问题。

我想说的是我寻求的表格UBB是更完善的尽可能的显示正常的表格,剔除不匹配的代码,否则直接查找TABLE,TR,TD替换就可以了,所以我的目标是必须把错误表格代码尽可能的限制在一个小的范围内而不扩大影响到外层表格的显示,我想这也是我努力寻找的表格UBB了。

再次感谢楼上兄弟

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

你说在html编辑器里面编辑好再贴过来, 那不如直接用wysiwyg的在线web编辑器, 或者用js做个表格生成器, 这样能保证被转换的是正确的html代码. 降低开发难度, 提高易用性, 何乐而不为呢
找稳定的工作和老婆...

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

我设想的表格UBB是象所有现在开放的UBB代码对外面向用户的,不纯粹是给管理员用的(如果管理员专用的话那是很简单了,保证正确表格代码的情况下直接替换TABLE,TR,TD就可以了),在这种有可能出现错误表格代码情况下就必须尽可能的严谨UBB,最关键的是在有错误的表格代码情况下,绝对防止它影响上层的表格

我的设想是有了这样的表格UBB,当然在前台提供尽可能方便实用的工具。初步设想点击表格UBB按纽,弹出HTML在线编辑器,在编辑器里编辑好后,点击插入按纽,自动替换<为[,>为]。

TOP

关于表格的正则表达式讨论(希望实现表格的UBB代码)

OK,在斑竹建议下,LeXRus大力帮助下,我已通过JSP实现了表格UBB,无论有什么错误表格代码,都决不会影响外层表格的正常显示,我的目的达到了。
我需要时间整理一下,唉,每天都睡眠不足啊,院里事又多,累,抽空整理好我就给大家演示一下,让大家参考参考。
我先洗头去,好几天没洗脏死了,唉

另正在整理ubb编辑器和html编辑器,谁有好的,请提供一下参考参考。

TOP

我测试一下列表UBB


  • 哈哈
  • 呵呵

    • 哈哈
    • 呵呵
    • 嘿嘿

      • 哈哈
      • 呵呵
      • 嘿嘿
      • 哼哼


    • 哼哼


  • 嘿嘿
  • 哼哼

怎么不能用

TOP