即时通讯使用
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"\>/';