Как получить японскую ссылку вики из моей английской ссылки вики?

Задача: У нас есть английская страница в Википедии, и нам нужно получить тот же адрес страницы на японском языке.

предложил проанализировать http://en.wikipedia.org/wiki/Mini 4wd? action = необработанные результаты (внизу есть ссылки на другие языки), но этот способ слишком неэффективен. Есть ли какие-то другие способы, это единственный реальный вариант?

Мы нашли API в Wiki, который подходит для одного слова. но для двух слов вроде - камен райдер, мини 4wd ... это не работает.

Мой код не работает

    $url = 'https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=100&llprop=url&lllang=ja&titles=Kamen rider';
    $url = rawurldecode(urlencode($url));
    echo $url;
    // outputs: https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=100&llprop=url&lllang=ru&titles=Mini+4wd

    // and then the rest your logic whatever it is the rest
    $header[] = "Accept: application/json";
    $header[] = "Accept-Encoding: gzip";
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
    curl_setopt($ch,CURLOPT_ENCODING , "gzip");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    $response = json_decode(curl_exec($ch));
     /* echo '<pre>';
     print_r($response);
     echo '</pre>'; */

    exit;

2 ответа

Решение

Пожалуйста, попробуйте этот код, он работает. Ваши $ ключевые слова = 'Mini 4wd';

$url = 'https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=100&llprop=url&lllang=ja&titles='.$keywords.'&redirects=';

$url1 = rawurldecode(urlencode($url));
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url1);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// $output contains the output string
$output = curl_exec($ch);
$info = curl_getinfo($ch);
$exec = explode('"url":"',$output);
$exe = explode('",',$exec[1]);
$URL = $exe[0];

Выход:

<p>Wikipedia Help here as <a href="<?php echo $URL;?>" target="_blank"><?php echo $URL;?></a></p>

Два слова не работают, потому что они неправильно отформатированы. Kamen<space>rider а также mini<space>4wd есть пробелы. Вы должны это быть преобразованы сначала. Рассмотрим этот пример:

$url = 'https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=100&llprop=url&lllang=ru&titles=Mini 4wd';
$url = rawurldecode(urlencode($url));
echo $url;
// outputs: https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=100&llprop=url&lllang=ru&titles=Mini+4wd

// and then the rest your logic whatever it is the rest
$contents = file_get_contents($url);
$contents = json_decode($contents, true);
// echo '<pre>';
// print_r($contents);
// echo '</pre>';

Образец скрипки

Другие вопросы по тегам