2014-01-22 41 views
1

感謝您的網站及其有幫助的成員,除了一個小問題之外,我幾乎完成了這個項目。在xpath中使用php變量需要一些幫助

背景..

我有輸入數據到一個XML文件,並顯示基於2個標準,它需要滿足今天的日期,並有狀態出的信息頁面的形式。

問題是我使用的代碼給我的數據時,它只匹配狀態,而不是兩個我需要它在顯示數據前都匹配。

XML結構....

<information> 
<entry> 
<date></date> 
<name></name> 
<status></status> 
<notes></notes> 
<comments></comments> 
</entry> 
</information> 

代碼檢索和顯示數據...

$lib = simplexml_load_file("sample.xml"); 
$today = date('m/d/y'); 
$query = $lib->xpath("//entry[.//date[contains(., ' $today')]]|//entry[.//status[contains(., 'out')]]"); 
if($query) { 
foreach($query as $node){ 
     echo "<div id='one'>$node->name</div> 
<div id='two'>$node->notes</div> 
<div id='three'><div class='front'>$node->comments</div></div>"; 

} 
} 
else { 
// Echo the special div. 
} 

所以你可以從我有它查詢它是否包含代碼見今天的日期通過$ today函數(這是行不通的)並查詢它是否包含狀態,但到目前爲止我無法使它匹配它只匹配狀態。

如果在某個地方已經回答了這個問題,我很抱歉,並且我非常感謝您對此事提供的任何幫助。如果問題太模糊,或者我沒有足夠細節,我也很抱歉。

+0

你不需要'echo'中的XPath – madebydavid

+0

對不起,這是我想它是不是有在首位仍然無法正常工作無論哪種方式 – TheWebMann

回答

1

中你的XPath表達式|意味着or,試試這個:

... xpath("/information/entry[date = '01/23/2014' and status='out']") 

它將不上

<date>01/23/2014</date> 
<status>out</status> 

使用本

... xpath("/information/entry[date[contains(., '01/23/2014')] and status[contains(., 'out')]]") 

上工作的偉大這個:

<date>foo01/23/2014</date> 
<status>barout</status> 

看到它的工作:https://eval.in/93642

+0

非常感謝你這對你的回覆很重要,它無疑會解決原來的問題。我不知道你是否可以幫助更新的問題?任何幫助都會得到很大的迴應。基本上它看起來像$今天變量不被查看或使用,並不匹配最新。 – TheWebMann

+0

經過重新閱讀後,需要的茶和應用你的代碼這最後的作品非常感謝你,當我有足夠的聲譽,你可以肯定我會提高你的答案,你是一個完整的明星。 – TheWebMann

+0

投票添加了非常感謝:) – TheWebMann