2016-08-12 86 views
0

我有一個XML文件,我需要循環並檢查字符串匹配。不知道爲什麼下面的代碼不起作用,即不返回「真」。PHP加載XML並檢查匹配

XML

<AUTHORIZED> 
<USER>janedoe</USER> 
<USER>sallysmith</USER> 
<USER>walterwilliams</USER> 
<USER>jennyjones</USER> 
</AUTHORIZED> 

PHP

<?php 

    $user = 'janedoe'; 

    //Load xml file 
    if (file_exists('users.xml')) { 
     $authUsers = simplexml_load_file('users.xml'); 
    } else { 
     echo 'Could not find list of authorized users!'; 
    } 

    //Check for approved user 
    if(in_array($user, $authUsers)){ 
     $approvedUser = 'true'; 
    } else { 
     $approvedUser = 'false'; 
    } 

    echo $approvedUser; 

?> 
+0

請做一個'var_dump'上'$ approvedUser'。我不認爲它的結構像你認爲的那樣。 –

+0

'var_dump($ approvedUser)'yield:'string(5)「false」' – PixelPaul

回答

2

simplexml_load_file返回SimpleXMLElement而不是Array,所以你不能使用in_array功能來做到這一點的功能。

可以做的,就是以價值,如果$authUsers->USER(這也是一個SimpleXMLElement),將其轉換爲數組,然後檢查:

$str = "<AUTHORIZED> 
<USER>janedoe</USER> 
<USER>sallysmith</USER> 
<USER>walterwilliams</USER> 
<USER>jennyjones</USER> 
</AUTHORIZED>"; 


$user = 'janedoe'; 

$authUsers = simplexml_load_string($str); 
var_dump((array) $authUsers->USER); 

//Check for approved user 
if(in_array($user, (array) $authUsers->USER)){ 
    $approvedUser = 'true'; 
} else { 
    $approvedUser = 'false'; 
} 
+0

謝謝,這做了我所需要的。 – PixelPaul

+0

不客氣。對答案的投票也將不勝感激:) – Dekel

+0

對不起。完成:) – PixelPaul