我已獲得DOMDocument
和DOMXPath
中所需的HTML數據。XPath查詢和HTML - 在錨標籤中查找特定的HREF
但我需要訪問並檢索href
值在某些<a>
標記。以下爲條件:
href
包含:some-site.vendor.com/jobs/[#idnumber]/job
(即some-site.vendor.com/jobs/23094/job
)href
含有不:some-site.vendor.com/jobs/search?search=pr2
href
含有不:some-site.vendor.com/jobs/intro
href
含有不:www.someothersite.com/
href
不包含:media.someothersite.com/
href
不包含:javascript:void(0)
這兩種(類似)查詢獲取的一切,但4-6 - 這是一件好事:
$joblinks = $xpath->query('//a[@href[contains(., "https://some-site.vendor.com/jobs/")]]');
$joblinks = $xpath->query('//a[@href[contains(., "job")]]');
然而,最終我需要訪問所有的包含href像#1,一個d將實際的href值賦給一個變量/數組。下面是我在做什麼:
$payload = fetchRemoteData(SPEC_SOURCE_URL);
// suppress warning(s) due to malformed markup
libxml_use_internal_errors(true);
// load the fetched contents
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($payload);
// parse and cache the required data elements
$xpath = new DOMXPath($dom);
//$joblinks = $xpath->query('//a[@href[contains(., "some-site.vendor.com/jobs/")]]');
$joblinks = $xpath->query('//a[@href[contains(., "job")]]');
foreach($joblinks as $joblink) {
var_dump(trim($joblink->nodeValue)); // dump hrefs here!
}
echo "\n";
這是真的打我 - 我很接近,但我似乎無法正確地調整查詢和/或訪問實際的HREF值。我最不高興的道歉,如果我沒有遵循這個問題的任何種類的協議...
任何/所有的幫助將不勝感激! Thanx提前多少!
是否有必要篩選HREF值僅使用XPath查詢?我確信這是可能的,但是我的頭很痛苦(典型的XPath)。也許你可以使用'$ xpath-> query()'來獲得一個與廣泛模式匹配的節點列表(例如'href =「https://some-site.vendor.com/jobs/」'),然後使用幾行PHP來更深入地檢查每個節點的href值? – 2012-06-08 20:13:22
「XPath 1.0」而不是「XPath 1.1」肯定會造成這種不必要的冗長......但這就是我們所有的a.t.m.我會創建一個函數,它可以與['registerphpfunctions'](http://php.net/manual/en/domxpath.registerphpfunctions.php)進行正則表達式匹配。 – Wrikken 2012-07-01 11:35:40