2014-11-09 2 views
2

Я пытался следовать учебники по следующему адресу: https://www.ibm.com/developerworks/xml/library/x-phpwikipedia/index.htmlПереписывание, чтобы избежать использования Zend

Все учебники используют в Zend Framework. Мне было интересно, как этот код можно адаптировать, чтобы избежать использования Zend (или любых других предварительных условий), если это возможно? См. Пример ниже. Благодарю.

<?php 
// load Zend classes 
require_once 'Zend/Loader.php'; 
Zend_Loader::loadClass('Zend_Rest_Client'); 

// define category prefix 
$prefix = 'hollywood'; 

try { 
// initialize REST client 
$wikipedia = new Zend_Rest_Client('http://en.wikipedia.org/w/api.php'); 

// set query parameters 
$wikipedia->action('query'); 
$wikipedia->list('allcategories'); 
$wikipedia->acprefix($prefix); 
$wikipedia->format('xml'); 

// perform request 
// iterate over XML result set 
$result = $wikipedia->get(); 
} catch (Exception $e) { 
die('ERROR: ' . $e->getMessage()); 
} 
?> 
<html> 
<head></head> 
<body> 
<h2>Search results for categories starting with 
    '<?php echo $prefix; ?>'</h2> 
<ol> 
<?php foreach ($result->query->allcategories->c as $c): ?> 
    <li><a href="http://www.wikipedia.org/wiki/Category: 
    <?php echo $c; ?>"><?php echo $c; ?></a></li> 
<?php endforeach; ?> 
</ol> 
</body> 
</html> 

ответ

1

Что-то, как это должно работать:

<?php 
$prefix = 'allcategories'; 
$url = "http://en.wikipedia.org/w/api.php?action=query&list={$prefix}&format=json&continue="; 
$res = file_get_contents($url); 
$data = json_decode($res); 
?> 
<html> 
<head></head> 
<body> 
<h2>Search results for categories starting with 
    '<?php echo $prefix; ?>'</h2> 
<ol> 
<?php foreach ($data->query->allcategories as $c): 
?> 
    <li><a href="http://www.wikipedia.org/wiki/Category:<?php echo $c->{'*'}; ?>"><?php echo $c->{'*'}; ?></a></li> 
<?php endforeach; ?> 
</ol> 
</body> 
</html> 

В запросе этом случае будет использовать формат JSON, его легче жить :)

+0

Привет, спасибо за помощь @FDIM, но извините, что это не работает в формате, который отображается выше, поскольку ни один объект не был создан. – Oroku

+0

Я обновил ответ @Oroku, на этот раз он протестирован. – FDIM

+0

отлично работает! большое спасибо – Oroku

0

В статье IBM упоминает о Wiki API по умолчанию возвращает результаты в XML, но также может возвращать результаты в JSON, WDDX, YAML, или PHP serialized.

В принципе, вам просто нужно сделать HTTP request, который запрашивает правильную информацию и анализирует возвращенные результаты. Например, нажмите эту ссылку http://en.wikipedia.org/w/api.php?action=query&list=allcategories&acprop=size%20&acprefix=hollywood&format=xml, и вы увидите, что она возвращает XML приводит к тому, что в браузере вы можете использовать любой язык для перебора и анализа.

Чтобы запросить содержимое данных xml в PHP, вы можете использовать что-то file_get_contents($target_url);, а затем вам не придется полагаться на создание клиента отдыха zend.

Смежные вопросы