• Uncle Liu's Blog
  • 追忆曾经逝去的岁月,在此存放我容易丢失的记忆!
  • 首页
  • 碎语
  • 留言板
  • 登录
  • PHP实现html标签补全

    [PHP+MYSQL]
    post by Uncle Liu / 2010-6-15 19:47 Tuesday

    我们有时候需要截断html的内容来输出,但是由于截断的位置并不确定,导致阶段后的html内容中的很多标签都没有正常闭合而导致页面变形,如何解决这个问题呢?当然是使用强大的正则表达式来匹配那些没有闭合的标签了,代码如下:

    /**
     * close all open xhtml tags at the end of the string
     *
     * @param string $html
     * @return string
     * @author Milian Wolff <mail@milianw.de >
     */
    function closetags($html) {
      #put all opened tags into an array
      preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
      $openedtags = $result[1];
     
      #put all closed tags into an array
      preg_match_all('#</([a-z]+)>#iU', $html, $result);
      $closedtags = $result[1];
      $len_opened = count($openedtags);
      # all tags are closed
      if (count($closedtags) == $len_opened) {
        return $html;
      }
      $openedtags = array_reverse($openedtags);
      # close tags
      for ($i=0; $i < $len_opened; $i++) {
        if (!in_array($openedtags[$i], $closedtags)){
          $html .= '</'.$openedtags[$i].'>';
        } else {
          unset($closedtags[array_search($openedtags[$i], $closedtags)]);
        }
      }
      return $html;
    } 

    来自:思想之地

    « 0812 | phpwind的密码及cookie加密方式»

    引用地址:

    评论:

    唯品会
    2010-08-18 19:36
    PHP比ASP强大好多啊
    岁月无痕
    2010-08-18 19:35
    代码不错! 留下了
    狂热
    2010-08-10 02:13
    看来朋友是个高手哦!
    江南夜色
    2010-07-18 09:59
    江南夜色路过此地。有和贵站做链接的念头。不知道贵站可否。。江南夜色's_Blog www.hellomc.cn
    半只青蛙
    2010-07-15 14:08
    有多个相同标记时,处理怕是有问题吧?
    小子
    2010-07-12 21:45
    额,貌似在 思想之地 也看到了同样的文章啊
    隆鼻网
    2010-07-05 15:21
    不错的代码,学习了。
    西安seo
    2010-06-26 06:23
    不懂程序的飘过!
    维C生活网
    2010-06-25 20:31
    不错,学习了,顶一下!
    奇遇
    2010-06-20 10:48
    貌似有些标签不需要闭合?

    发表评论:

  • 搜索

  • 腾讯微博

  • 岁月如梭

  • 分类

    • 心情记事(36) 订阅该分类
    • 经典网文(25) 订阅该分类
    • PHP+MYSQL(39) 订阅该分类
    • Javascript(21) 订阅该分类
    • 电脑网络(30) 订阅该分类
    • emlog(7) 订阅该分类
    • Linux(2) 订阅该分类
  • 日历

  • 随机日志

    • PHP模板引擎Smarty常用的20个变量操作符
    • php导出excel
    • 恢复更新
    • 开心网大量发垃圾邮件了
    • AJAX技术在PHP开发中的简单应用
  • 链接

    • 智能搜索
    • 合肥校园网
    • TangJun's blog
    • vb.vc个性域名
    • 点滴记忆
    • 奇遇——心情随笔
    • Sfan@Live
    • 小平博客
    • 游戏毁我半生
    • 铁观音茶叶
    • 流失 V.求锦三月
    • 铁观音
    • ═╬簡箪√嗳
    • KLLER's Blog
    • Web前端开发
    • 箴言物语
    • 零度自由
    • 刘少工作室
    • 幽默笑话
    • ------------------------------
    • PHP100中文站论坛
    • Api.im
    • emlog
  • 最新日志

    • 情侠
    • 0812
    • PHP实现html标签补全
    • phpwind的密码及cookie加密方式
    • 本博客<<心情记事>>日志禁止转载
  • 信息

    • 日志数量:160
    • 评论数量:372
    • 引用数量:1
    • 今日访问:550
    • 总访问量:325147
订阅Rss
Powered by emlog | Theme by wenlu 沪ICP备09020591号