即时通讯使用PHP和我需要刮一些信息从一些卷曲响应到一个网站。我模拟浏览器的ajax请求和浏览器的正常(全部)页面请求,但是ajax响应与本节html中的整个页面请求略有不同。PHP正则表达式可选地匹配整个词
Ajax响应是: <div id="accountProfile"><h2>THIS IS THE BIT I WANT</h2><dl id="accountProfileData">
但是正常的反应是: <div id="accountProfile"><html xmlns="http://www.w3.org/1999/xhtml"><h2>THIS IS THE BIT I WANT</h2><dl id="accountProfileData">
即Ajax响应缺少标签:<html xmlns="http://www.w3.org/1999/xhtml">
。我需要获取h2
标签之间的位。显然我不能只是刮<h2>THIS IS THE BIT I WANT</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">
标签藏汉模式?如果它有助于简化干草堆的简洁的目的,那很好。
正常响应被打破 - 一个'html'元素具有文档中没有位置。我不完全确定你的问题是什么?你有没有考虑过使用DOM解析器来解析HTML?请参见[解析HTML的最佳方法](http://stackoverflow.com/questions/3577641/3577662#3577662) – 2011-05-10 07:38:15
它可能是坏的,但它在那里都一样。我没有写我刮的网站。好的,我更新了需求 – mulllhausen 2011-05-10 07:39:28