热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[分享]正则表达式分析/提取XML/XHTML标签属性解决方案

[分享]正则表达式分析/提取XML/XHTML标签属性直接看代码吧,有什么不足请各位大神指教..PHPcode<?php#author:selfimpr#blog:http://blog.csdn.net/lgg201#mail:lgg860911@yahoo.c
[分享]正则表达式分析/提取XML/XHTML标签属性
直接看代码吧, 有什么不足请各位大神指教..

PHP code
(?>\w+))                                    #标签名
    (?P                                                #单个属性子组
        (?>\s+)                                                #前置空白
        (?P\w+)                                    #属性名
        =                                                    #赋值符号
        (?P(?P')|(?P"))    #读取包裹属性值的引号
        (?P                                        #值处理子组
            (?:                                                #将值分解处理: 分解为1) 偶数个转义字符的部分; 2) 单个转义字符+引号或非当前使用引号的字符
                (?P(?>(?:\\\\\\\\)*)*)                #消耗掉当前位置起偶数个转义字符
                (?P                                    #非转义字符自身的处理
                    \\\\(?P=quote)|(?(5)[^']|[^"])            #这里用了分支, 一边是转义字符+引号, 另一边是条件匹配的非当前引号字符
                )
            )*                                                #对值进行的分组进行0次或多次处理
        )
        (?P=quote)                                            #引号闭合
    )*                                                        #属性的重复
    \s*                                                        #后置空白
\/?>                                                        #标签闭合处理(这里的焦点在于对属性值的处理, 所以没有对的方式进行处理)
/x
eot;

#示例输入
$content1    = <<战神啊共和国'>
eot;
$content2    = <<战神啊共和国">
eot;

echo $pattern . chr(10);
preg_match($pattern, $content1, $matches);
print_r($matches);
preg_match($pattern, $content2, $matches);
print_r($matches);



------解决方案--------------------
没人甩你,我来支持一下。
------解决方案--------------------
嗯,一般lgg201上的都是干货....

待会有空测一下,非找个bug出来....
------解决方案--------------------
yeah!

$content1 = <<
eot;

这个没出来
------解决方案--------------------
Warning: preg_match() [function.preg-match]: Unknown modifier 't' in ....
------解决方案--------------------
占楼分割线
------解决方案--------------------
嗯,这下突破不了了....

坦白说,这正则还没看懂,有空的时候学习下~~
------解决方案--------------------
to lgg201,请教


能否简单说明,大概什么场合你需要这种匹配呢?
推荐阅读
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
  • 题目描述非常吸引人。每颗星星可以通过其在窗口的左下角和右上角位置构建两条扫描线,从而将问题转化为区间增减和求最大值的操作。需要注意的是,位于边界的星星不应计入结果,因此在处理时应分别对左右边界进行适当的增减调整。此外,利用线段树和离散化技术可以显著提高算法效率,确保在大规模数据下的性能表现。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • Vuex 实战进阶:构建高效笔记本应用(第二篇)
    在上一篇文章中,我们初步探讨了 Vuex 在该项目中的应用。本文将深入解析整个项目的架构设计。首先回顾 `main.js` 的内容,然后重点分析 `App.vue` 文件,其中引入了 `Toolbar.vue` 和 `NodeList.vue` 组件,详细说明它们在应用中的作用和交互方式。通过这些组件的协同工作,我们将展示如何构建一个高效且响应迅速的笔记本应用。 ... [详细]
  • React组件是构成用户界面的基本单元,每个组件都封装了特定的功能和逻辑,具备高度的独立性和可复用性。通过将不同大小和功能的组件组合在一起,可以构建出复杂且功能丰富的页面,类似于拼图游戏中的各个部分,最终形成一个完整的视觉效果。 ... [详细]
  • 新年伊始,正是学习的最佳时机。本文全面解析了CK1957-Zookeeper的核心概念与实践技巧,旨在帮助初学者快速掌握这一深度学习工具。通过详细的理论讲解和实际操作示例,读者可以更好地理解Zookeeper的工作原理及其在分布式系统中的应用。无论是新手还是有一定基础的学习者,都能从中受益匪浅。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 探究Oracle数据库字符集编码的详细方法与实践
    本文深入探讨了Oracle数据库字符集编码的详细方法与实践。首先,通过执行 `SELECT USERENV('language') FROM DUAL;` 查询服务端字符集编码。其次,通过在注册表中搜索 `NLS_LANG` 参数来查看客户端字符集编码。此外,文章还介绍了如何在不同场景下正确配置和转换字符集,以确保数据的一致性和完整性。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 本教程旨在为HTML5初学者提供Canvas画布的基础知识与实践指导。通过详细解析Canvas元素的使用方法、绘图API及常见图形绘制技巧,帮助读者快速掌握在网页中利用Canvas进行动态图形创作的基本技能。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
author-avatar
u47871838
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有