我是用来解析网页模板的。就是吧网页模板放到数据库里,然后里面有写关键字是要用数据库里的数据替换的 比如:“{webTitle}”替换成网站名称。现在网页中有很多这样的要替换的,如何快速替换?另外,如果有嵌套的就更麻烦了,比如:
现在有一个变量a,函数prc,在模板里,吧a做为prcLoop的参数,{prcLoop({a})}
这样如何来解析呢?也就是嵌套了的怎么处理啊?
正则表达式好像也不好处理呢。希望各位大哥帮忙啊。分不够可以继续加啊!

解决方案 »

  1.   

    不建议用嵌套,实际使用当中碰到嵌套的也有 不过不多 可以用其他方式代替 比如 {prcLoop([a])} 
    用中括号 目的是为了方便外层的匹配。
    处理[a]也比较轻松
      

  2.   

    比如:“{webTitle}”替换成网站名称是所有的{webTitle}都替换成相同的网站名称吗? 即  "{webTitle}"->"新浪" ?
    如果是我不明白直接replace替换有什么问题?
      

  3.   

    replace需要来回多次扫描整串。应该有一次扫描就全部替换的算法。不过自己也是用的replace,简单。反正现在电脑速度也够快的,处理字串,小菜一碟。
      

  4.   

    呵呵,用Replace肯定是不行的,我这是在解析文本,不是简单的替换。如果是一个函数,如何替换?
    maddemon ,谢谢啊,只是如果用其他的替换,那我就要定义好多规则了,那是不是每个变量都要用不同的规则呢?
    假设我有两个session变量,一个是userLevel,另外一个是保存在Session里的等级价格,
    Session["userLevel"]=2;
    Session["level1"]=0.3;
    Session["level2"]=0.5;那我怎么来获得价格?应该是{sess[level{sess[userLevel]}]}这个嵌套如何解决?希望各位大哥帮忙啊,谢谢了
    如果这个解决了,函数也就解决了。
      

  5.   

    在网站实际开发中 我碰到过嵌套的 比如栏目的文章循环(既要循环栏目 也要循环栏目的文章)
    栏目和子栏目的列表 比如阿里巴巴的栏目 就得用循环比较好。这样有个解决方案 就是
    把被嵌套的标签用 一个 特殊 标签代替 比如 [custom:文章列表]
    文章列表的具体内容 当然也是{...}之类,可以放在数据库里。美其名曰: 自定义标签   自己囧一下