2017-06-13 61 views
0

我有下面的PHP代碼:如何過濾simplexml_load_file foreach循環?

<?php 
$website_url = 'domain.com/sitemap.xml'; 
$xml=simplexml_load_file(''. $website_url.'') or die("Error: Cannot create object"); 
foreach($xml->url as $val) 
{ 
    echo $val->loc. '<br>'; 
} 

它正常工作,我從XML網站地圖文件的URL的,但我想篩選陽性的比賽(和否定匹配後),例如專用線即包含「蘋果」和「果汁」(對於不包含「rss」或「站點地圖」的消極行,只有行)。我嘗試了幾種使用preg_match的方法,但沒有成功,我得到空白頁面結果或500錯誤。 我提取並想要過濾的xml文件(一個簡單的sitemap.xml文件)有大約20000行/ url的

+0

向我們展示你的企圖,我們可以嘗試找到你在哪裏錯了。 –

+0

字符串是否需要包含_both_關鍵字,或者您的意思是_any_關鍵字? (它是'和'還是'or'?) –

回答

0

嘗試使用http://php.net/strpos進行匹配。您還可以檢查RSS和網站地圖:

foreach($xml->url as $val) 
{ 
    $url = $val->loc; 
    if(strpos($url, 'apple') !== FALSE && strpos($url, 'juice') !== FALSE) { 
     echo "keyword found in URL\n"; 
     break; 
    } 
    else { 
     echo "keyword not found\n"; 
    } 
} 
+0

完美。謝謝,我想要的工作方式 – becoolflyer

+0

有沒有什麼辦法可以從struts中的$ variable獲得AND(&&)或OR(||)? – becoolflyer

0

可以使用xpath()此:

特別contains()

foreach($urlset->xpath('url[contains(., "foo")]') as $url) { 

否定,包裝p在not()表達:

foreach($urlset->xpath('url[not(contains(., "foo"))]') as $url) {