2015-10-25 6 views
0

Я работаю на систему обновлений, которая проверяет строку, удаленный файл,Update Check с PHP

$local = simplexml_load_file(root_p.'/version.xml'); 
$remote = simplexml_load_file("mygithuburltoblob/version.xml"); 
if($local->build == $remote->build) { 
} else { 
    echo "Version ".$remote->version." Available now"; 
} 

Но даже если номера сборки совпадают, все равно возвращается, что обновление доступно. Кто-нибудь знает, почему это было бы? (Да root_p уже определена, проблема не загружается и извлечения значений) Remote Var самосвала

object(SimpleXMLElement)#12 (6) { ["title"]=> string(11) "Loopy Cubix" ["author"]=> string(12) "Morgan Green" ["version"]=> string(3) "1.0" ["build"]=> string(4) "1111" ["type"]=> string(5) "Alpha" ["feed"]=> object(SimpleXMLElement)#15 (0) { } } 

Местное Var самосвала

object(SimpleXMLElement)#11 (6) { ["title"]=> string(24) "Looped Cubix Pre Release" ["author"]=> string(12) "Morgan Green" ["version"]=> string(3) "1.0" ["build"]=> string(4) "1111" ["type"]=> string(6) "Closed" ["feed"]=> object(SimpleXMLElement)#15 (0) { } } 

enter image description here

На вершине страница мой вывод от

   <?php 
       $local = simplexml_load_file(root_p.'/version.xml'); 
       $remote = simplexml_load_file("https://raw.githubusercontent.com/Doxramos/Invontrol/master/version.xml"); 

       echo "Local: ". gettype($local->build); 
       foreach($local->build as $build) { 
        echo $build. "<br />"; 
       } 
       echo "Remote: ". gettype($remote->build); 
       foreach($remote->build as $build) { 
        echo $build. "<br />"; 
       } 

Показывает как объект с тем же значением.

+1

Там нет никакого способа, мы можем теперь не видя XML или var_dumps из '$ local' и' $ remote' –

+0

@JohnConde Добавлен сброс переменной. –

+0

Пожалуйста, укажите код, который начинается с XML, иначе это невозможно воспроизвести. Вывод 'var_dump()' здесь не помогает. –

ответ

0

Проблема была связана с пробелами при анализе данных XML. Я в конечном итоге фиксируя его, заменив

if($remote->build == $local->build) { 
    } 
else { 
    //Output Update Information 
} 

с

$trimmed_local = trim($local->build); 
$trimmed_remote = trim($remote->build); 

И используя новые переменные, как мои операторы сравнения

if($trimmed_local == $trimmed_remote) { 
} 
else { 
    //Output Update Information 
} 
0

Как я вижу, что роект нет равных, пример некоторых элементов по сравнению:

["title"]=> string(11) "Loopy Cubix" 

["title"]=> string(24) "Looped Cubix Pre Release" 
+0

Вот только некоторые тесты, чтобы убедиться, что все сведено вместе; Разве это не сравнение, если это то, что я сравниваю? –