2016-08-12 7 views
0

私はループして文字列の一致をチェックする必要があるXMLファイルを持っています。以下のコードが機能しない理由、つまり「true」を返さない理由は不明です。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'を行ってください:あなた行い、$authUsers->USER場合、(もSimpleXMLElementである)の値を取り配列に変換し、それをチェックしていることができますどのような

承認されたユーザー。私はそれがあなたが思っているように構造化されているとは思わない。 –

+0

'var_dump($ approvedUser)'は次のようになります: 'string(5)" false "' – PixelPaul

答えて

2

SimpleXMLElementなくArrayを返すので、あなたがこれを行うにはin_array機能を使用することはできませんsimplexml_load_file機能。

$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

関連する問題