即時通訊使用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