Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在id为第一个属性的div标记之间获取文本,然后是多个属性。只有正则表达式

如何在id为第一个属性的div标记之间获取文本,然后是多个属性。只有正则表达式
EN

Stack Overflow用户
提问于 2012-08-02 09:33:15
回答 1查看 2K关注 0票数 0

可能重复: 如何在id为第一个属性的div标记之间获取文本。只有正则表达式。

下面是这个场景

我使用这个正则表达式在div标记中使用id test1或tes2或test3获取文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id = "test1">text</div>
<div id = "test2">text</div>
<div id = "test3">text</div>

$id_value = "test1" or "test2" or "test3";
$regex = "#\<div id=\"".$id_value."\"\>(.+?)\<\/div\>#s";

我唯一的要求是在下面的场景中从div标记获取文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="test" class="testing" style="color:red" etc etc .... more attributes >text</div>

例如,id是div标记的第一个属性,可以后面跟着n个属性。如何仅通过regex从这样的标记中提取文本。

我甚至试过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$regex = '#<div\s+.*?id="".$id_value."".*?>(.*?)</\s*div>#ims';

当$id_value = " test1“时,它返回div标记的文本,但是如果$id_value=" test2”,则返回节点test1和test2的文本值。如果$id_value="test3“,则返回所有3个节点的文本值。我只需要与特定id相关的文本值。只使用Regex .

请帮忙谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 09:35:40

不要使用RegExp来解析HTML。相反,使用PHP的DOM扩展,它可以正确地解析任何类型的HTML。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

    $html = <<<HTML
<div id = "test1">text</div>
<div id = "test2">other text</div>
<div id = "test3">new text</div>
HTML;

    $id_list = array(
        "test1",
        "test2",
        "test3",
    );

    $doc = new DOMDocument();
    $doc->loadHTML($html);
    foreach ($id_list as $id) {
        $div = $doc->getElementById($id);
        if ($div == NULL) {
            echo "There's no element with an ID of $id<br>\n";
        }
        else {
            echo "$id's content is: " . $div->textContent . "<br>\n";
        }
    }

如果并且只有当您绝对必须使用RegExp时,我才会想到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

    $html = <<<HTML
<div id = "test1">text</div>
<div id = "test2">other text</div>
<div id = "test3">new text</div>
HTML;

    $id_list = array(
        "test1",
        "test2",
        "test3",
    );

    foreach ($id_list as $id) {
        $pattern = <<<REGEX
/
<div\s*                     #Opening Tag
(?:                         #Attributes before ID
    [a-z]+                  #Attribute name
    \s*=\s*                 #Equals
    (?:"[^"]*"|'[^']*')     #Attribute content
    \s*                     #Spaces?
)*                          #Many or none
(?:                         #ID Attribute
    id
    \s*=\s*
    (?:"$id"|'$id')         #Matches the ID
    \s*
)
[^>]*                       #Anything after ID
>                           #Closing Tag
([^<]*)                     #Actual content!
<\/div>
/xi
REGEX;

        preg_match_all($pattern, $html, $matches);
        var_dump($matches);
    }

请注意,如果使用此代码,unh̶oly͘͘c̀h̶i͏l҉d wį会流处女的血。国际货币基金组织( <center> )无法维持这一局面,为时已晚。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11782792

复制
相关文章
python抛出异常和捕获异常_在try块中可以抛出异常吗
2.解析 关键字try 以及except是 使用Python 解释器主动抛出异常的关键, Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行 except…as… 是固定的语法格式 打印traceback信息 finally 后的代码不管是否抛出异常都会执行 except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始 注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)
全栈程序员站长
2022/11/02
4.6K0
在Java8的Consumer中抛出异常
最近在实现公司内部一个通用svn数据工具类,其中有段代码是拿到当前更新后的数据进行下一步操作,用的是java8的Consumer实现的,代码如下:
Erwin
2021/03/04
3.9K1
[010]HWC在SurfaceFlinger中的角色
HWC是Hardware Composer是缩写,翻译成中文就是硬件作曲家,或者硬件设计者。
王小二
2020/06/08
1.9K0
[010]HWC在SurfaceFlinger中的角色
在python中,如果异常并未被处理或捕捉_抛出异常是什么意思
Python使用异常类来管理异常信息。当发生异常的时候,程序会抛出一个异常信息,自动根据代码的层次查找异常处理信息。当代码发生异常而没有指定处理异常的方法是,Traceback会打印发生异常时代码执行栈的情况。
全栈程序员站长
2022/11/02
1.7K0
python中抛出异常_python mkdir
Python程序中的异常不仅可以自动触发,还可以由开发人员使用raise语句和assert语句主动抛出。
全栈程序员站长
2022/11/02
6590
python中抛出异常_python mkdir
在Windows中劫持DLL
DLL劫持是一种用于执行恶意有效负载的流行技术,这篇文章列出了将近300个可执行文件,它们容易受到Windows 10(1909)上相对路径DLL劫持的攻击,并展示了如何使用几行VBScript绕过UAC可以以提升的特权执行某些DLL劫持。
Al1ex
2021/07/21
2.2K0
在Windows中劫持DLL
windows中在 pycharm中安装pytorch
windows中在 pycharm中安装pytorch 打开pycharm 打开file————settings————Project Interpreter———— 点击+号
全栈程序员站长
2022/09/28
1.5K0
windows中在 pycharm中安装pytorch
在医疗行业中,FPGA扮演什么角色?
FPGA(现场可编辑门阵列)作为赛灵思(Xilinx)的一项重要发明,以其可编程和灵活性著称。起初,FPGA只是用来仿真ASIC,再进行掩码处理和批量制造使用。不过ASIC相比FPGA来说明显在定制化上要求过高,流片量过小情况下成本反而更高,因此两者毫不冲突地“各司其职”。而后,随着加速器的出现和算力提升,目前已成为与GPU齐名的并行计算器件。
FPGA技术江湖
2021/04/14
8670
在医疗行业中,FPGA扮演什么角色?
领域模型在交流中扮演的角色
问题:我对于领域模型如何表示始终还不太明白。按照Evans书里的说法,代码应当是领域模型的主要部分,文档、图表作为补充。另外一方面,领域模型应当是所有参与者都能够理解的,而我觉得用户不太可能去理解代码。
张逸
2018/10/24
1.3K0
领域模型在交流中扮演的角色
在Spring/Springboot中异步处理异常
目前,每当出现特殊情况时,客户休息应用程序都会返回一个 ResponseEntity(一个由状态、标头和正文组成的 Http 响应包装器)。例如,在请求详细信息时找不到客户。
用户4235284
2023/10/14
3040
在Spring/Springboot中异步处理异常
在 React 应用中获取数据
可以说 React 是构建 web 应用最流行的库。然而,它并不是全能的 web 框架。它只关注 MVC 中的 view 模块。
前端达人
2018/10/18
8.5K0
在 React 应用中获取数据
在 Web 中获取 MAC 地址
两年前做的一个项目,当时客户的需求还没有完成,客户就提出了解决安全的问题,这是当时写的一个记录,分享到这里。
码农UP2U
2020/08/26
15.7K4
在js中获取thymeleaf变量
大人者,不失其赤子之心者也。——《孟子·离娄下》 代码很简单 如下即可,这里的'Achao'是为了防止编译报错 <script th:inline="javascript"> var data = /*[[${data}]]*/ 'Achao'; console.log(data); </script>
阿超
2022/08/16
13.3K0
在Springmvc中获取properties属性
一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在springmvc中也提供了获取property的类,比如@Value来获取。我接触spring很浅,基本上都是百度的问题解决方法,百度到@value的用法,按照说明尝试了两次都失败了。正巧身边又有合适的方法,于是便没有去深入研究为什么失败,这个留在以后研究。下面就是获取代码: 源码来自:https://github.com/thinkgem/jeesite 1 package com.demo.common.utils; 2 3 im
Ryan-Miao
2018/03/13
3.4K0
在Windows中玩转Docker Toolbox
最近在研究虚拟化,容器和大数据,所以从Docker入手,下面介绍一下在Windows下怎么玩转Docker。
深蓝studyzy
2022/06/16
1.9K0
在Windows中玩转Docker Toolbox
在windows中:双击运行Python
一、安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退。怎样避免闪退呢?
py3study
2020/01/06
4.6K0
在windows中:双击运行Python
在QT中处理windows消息
http://blog.csdn.net/sryan/article/details/6744070
bear_fish
2018/09/20
2.6K0
在QT中处理windows消息
在windows环境中关于 pychar
因为要在windows系统系统中练习tensorflow,所以需要配置一下环境(来回的开关机切换环境太麻烦了。。。。。。)
py3study
2020/01/21
9100
在 Azure Application Insights 中记录用户身份信息
Azure Application Insights 是一个非常强大的 APM 工具,用于监视 Web 应用程序。但是,并非我们需要的所有功能都是开箱即用的。例如,为了记录请求和响应正文,我们必须写一个自定义 ASP.NET Core 中间件,就像这篇文章说的那样。
Edi Wang
2021/08/23
1K0
在 Azure Application Insights 中记录用户身份信息
在Xcode的模拟器中的textField中输入中文
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/48895361
用户1451823
2018/09/13
3.5K0
在Xcode的模拟器中的textField中输入中文

相似问题

在Windows Azure中:什么是web角色、工作者角色和VM角色?

31

Azure工作者角色中的异常警报

20

在Windows中实现工作者角色

12

Windows Azure - HttpListener -工作者角色

10

在Azure工作者角色中运行WebJobs

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文