Получение данных из Википедии

0

Привет, может кто-нибудь указать и объяснить, где я ошибаюсь, пытаясь извлечь данные из Википедии на основе поиска пользователя? См. Код ниже. Благодарю.

<html>
<head></head>
<body>
<h2>Search</h2>
<form method="post">
  Search: <input type="text" name="q" />
</form>

<?php
// if form submitted
if (isset($_POST['q'])) {


$search = $_POST['q'];
$url = "http://en.wikipedia.org/w/api.php?
action=query&list=search&srwhat=text&format=json&srsearch={$search}&continue=";
$res = file_get_contents($url);

$data = json_decode($res);



?>
<h2>Search results for '<?php echo $_POST['q']; ?>'</h2>
<ol>
<?php foreach ($data->query->search as $r): ?>
  <li><a href="http://www.wikipedia.org/wiki/
  <?php echo $r['title']; ?>">
  <?php echo $r['title']; ?></a> <br/>
  <small><?php echo $r['snippet']; ?></small></li>
<?php endforeach; ?>
</ol>
<?php 
}
?>

</body>
</html>
Теги:

2 ответа

1
Лучший ответ

Попробуйте обновить код:

<html>
<head></head>
<body>
<h2>Search</h2>
<form method="post">
  Search: <input type="text" name="q" />
</form>

<?php
// if form submitted
if (isset($_POST['q'])) {
    $search = $_POST['q'];
    $url = "http://en.wikipedia.org/w/api.php?action=query&list=search&srwhat=text&format=json&srsearch=$search&continue=";
    $res = file_get_contents($url);
    $data = json_decode($res);
    echo "<pre>";
    print_r($data);
    echo "</pre>";exit;
?>
<h2>Search results for '<?php echo $_POST['q']; ?>'</h2>
<ol>
<?php foreach ($data->query->search as $r): ?>
  <li><a href="http://www.wikipedia.org/wiki/
  <?php echo $r->title; ?>">
  <?php echo $r->title; ?></a> <br/>
  <small><?php echo $r->snippet; ?></small></li>
<?php endforeach; ?>
</ol>
<?php 
}
?>

</body>
</html>
  • 0
    @Bhumi_Shah спасибо, однако это только для отображения данных print_r, echo $ r ['title'] не отображается.
  • 0
    Пожалуйста, удалите тег <pre> и выйдите, чтобы отобразить нижний код и поставьте галочку, чтобы принять ответ
Показать ещё 3 комментария
0

Удалите пробел перед "действием" в URL-адресе

$ url = " http://en.wikipedia.org/w/api.php? action = query & list = search & srwhat = text & format = json & srsearch = {$ search} & continue =";

Должно быть

$ url = " http://en.wikipedia.org/w/api.php?action=query&list=search&srwhat=text&format=json&srsearch= {$ search} & continue ="; Вы также можете использовать urlencode.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню