2017-08-07 31 views
0

ロードXMLので、私のサンプルPHPスクリプトに私が持っている

$get = file_get_contents('some-book/book.xml'); 
$arr = simplexml_load_string($get);?> 
echo $arr->title; 
echo "<br>"; 
echo $arr->year; 
echo "<br>"; 

私は(予想通り)私は、XMLをロードしようとすると、

Some Book Title 
2012 

は今問題があり得ますforeach、xmlは読み込まれません。

$dir = "."; 
$exclude = array(".","..",".*","*.php"); 
if (is_dir($dir)) { 
    $files = array_diff(scandir($dir), $exclude); 
    foreach ($files as $file) : ?> 

     <?php 
      $filepath = str_replace(' ', '%20', $file); 
      $get = file_get_contents($filepath.'/'.$filepath.'.xml'); 
      $arr = simplexml_load_string($get); 
      print_r($arr); 
     ?> 

     <li class="list-group-item"> 
      <div class="col-xs-4 col-sm-3"> 
       <img src="<?= $filepath ?>/folder.jpg" alt="<?= $file ?>" class="img-responsive" /> 
        </div> 
        <div class="col-xs-8 col-sm-9"> 
         <a href="<?= $file ?>"> 
          <?php echo $arr->title; ?> 
         </a> 
        </div> 
        <div class="clearfix"></div> 
       </li> 

     <?php $arr = ''?> 

    <?php endforeach; 
} 

この行は、XML

$get = file_get_contents($filepath.'/'.$filepath.'.xml'); 

をロードするようになっていると、この行は上の偽のブール値を返しますxmlデータ

<?php echo $arr->title; ?> 
+0

この行を知りません '<?php $ arr = ''?>'。セミコロン(;)で終わらなければならない。だから '<?php $ arr = ''; ?> ' ' – Yolo

+0

ありがとうございますが、問題を修正しませんでした。まだxmlにパスが指定されていません – dreadycarpenter

+0

@Yoloセミコロンは最後の行ですのでオプションです! –

答えて

0
両方 file_get_contents

simplexml_load_stringから本のタイトルをエコーすべきです失敗。正確に何がうまくいかないかを知るために、いくつかの防御チェックを追加することをお勧めします。

$get = file_get_contents($filepath.'/'.$filepath.'.xml'); 
if ($get === false) { 
    echo 'failed to read ' . $filepath . '/' . $filepath . '.xml <br>'; 
    var_dump(file_exists($filepath.'/'.$filepath.'.xml')); 
    // if file_exists returns true, check the file permissions 
    continue; 
} 

$arr = simplexml_load_string($get); 
if ($arr === false) { 
    echo 'check if ' . $filepath . ' contains valid xml <br>'; 
    continue; 
} 
関連する問題