加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php正则表达式可选地匹配整个单词

发布时间:2020-12-13 16:11:48 所属栏目:PHP教程 来源:网络整理
导读:即时通讯使用 PHP,我需要从网站的一些卷曲响应中抓取一些信息.我正在模拟浏览器的ajax请求和浏览器的正常(整个)页面请求,但是ajax响应与html的这一部分中的整个页面请求略有不同. ajax响应是: div id =“accountProfile” h2这就是我想要的 / h2 dl id =“a
即时通讯使用 PHP,我需要从网站的一些卷曲响应中抓取一些信息.我正在模拟浏览器的ajax请求和浏览器的正常(整个)页面请求,但是ajax响应与html的这一部分中的整个页面请求略有不同.

ajax响应是:
< div id =“accountProfile”>< h2>这就是我想要的< / h2>< dl id =“accountProfileData”>

但正常的反应是:
< div id =“accountProfile”>< html xmlns =“http://www.w3.org/1999/xhtml”>< h2>这就是我想要的< / h2>< dl id = “accountProfileData” > 即ajax响应缺少标签:< html xmlns =“http://www.w3.org/1999/xhtml”>.我需要获取h2标签之间的位.很明显,我不能只是为< h2>刮掉页面.这就是我想要的< / h2>< dl id =“accountProfileData”>因为这些标签可能出现在其他地方,而不包含我想要的信息.

我可以单独匹配其中一个模式,但我想在一个正则表达式中同时执行这两个模式.这是我的匹配ajax响应的解决方案:

<?php
$pattern = '/&;div id="accountProfile"&;&;h2&;(.+?)&;/h2&;&;dl id="accountProfileData"&;/';
preg_match($pattern,$haystack,$matches);
print_r($matches);
?>

有人可以告诉我如何改变模式,以选择性地匹配< html xmlns =“http://www.w3.org/1999/xhtml”>标签还是?如果为了简洁起见,它有助于简化干草堆,这很好.

解决方法

我没有测试过,但你可以尝试这个:

$pattern = '/&;div id="accountProfile"&;(&;html xmlns="http://www.w3.org/1999/xhtml"&;){0,1}&;h2&;(.+?)&;/h2&;&;dl id="accountProfileData"&;/';

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读