Как бы я повторил это в PHP, используя SimpleXML - PullRequest
0 голосов
/ 06 февраля 2010
Response example for MD5 hash found, for example http://md5.noisette.ch/md5.php?hash=2a0231531bc1a7fc29e2fa8d64352ae9 :

<md5lookup>
  <hash>2a0231531bc1a7fc29e2fa8d64352ae9</hash>
  <string>noisette</string>
</md5lookup>

Response for MD5 hash *not* found, for example http://md5.noisette.ch/md5.php?hash=11111111111111111111111111111111 :

<md5lookup>
  <error>
    No value in MD5 database for this hash.
  </error>
</md5lookup>

Response for MD5 hash *not* found, for example http://md5.noisette.ch/md5.php?hash=1 :

<md5lookup>
  <error>
    The string provided is not a true MD5 hash. Please try again.
  </error>
</md5lookup>

Хорошо, я только учусь, как использовать SimpleXML. Я запускаю скрипт для запуска похожих API с разных сайтов, но это не так. Я не уверен, как бы я использовал PHP, чтобы отобразить ошибку, если это была ошибка или строка, если она была успешной. API, которые я использую сейчас, имеют только true или false, но их иерархия остается неизменной, независимо от результата.

Например

http://gdataonline.com/qkhash.php?mode=xml&hash=notanactualhashandwillnotbefound Этот хэш не будет найден. http://gdataonline.com/qkhash.php?mode=xml&hash=098f6bcd4621d373cade4e832627b4f6 Этот хеш вернет "test"

Как вы можете видеть, иерархия будет такой же, и, следовательно, легко анализировать и выводить эхо

1 Ответ

1 голос
/ 06 февраля 2010

Я не уверен, что понимаю, что вы спрашиваете, но вы просто загружаете URL-адрес в SimpleXml и получаете доступ к узлам с помощью обычной записи объекта, например,

$parentNode->childNode

В приведенном ниже примере загружается XML из URL-адреса и выводится сообщение об ошибке, если оно существует, а если нет, то выводится строковый узел.

$baseUrl = 'http://md5.noisette.ch/md5.php?hash=';
$hashes  =  array('2a0231531bc1a7fc29e2fa8d64352ae9',
                  '11111111111111111111111111111111',
                  'not a hash');

foreach($hashes as $hash) {

    // load the XML from the URL
    $dom = simplexml_load_file($baseUrl . $hash);

    if($dom->error) {
        echo $dom->error;
    } else {
        echo $hash, ' : ', $dom->string;
    }

    echo PHP_EOL; // linebreak
}
...