3

我正在尝试使用此代码通过 wikipedia API 检索文章

$url = 'http://en.wikipedia.org/w/api.php?action=parse&page=example&format=json&prop=text';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$c = curl_exec($ch);
$json = json_decode($c);
$content = $json->{'parse'}->{'text'}->{'*'};

我可以在我的网站上查看内容,一切都很好,但是我检索到的文章中的链接有问题。如果您打开网址,您会看到所有链接都以 href=\"/ 开头,这意味着如果有人点击文章中的任何相关链接,它会将他重定向到www.mysite.com /wiki/..(错误 404)en.wikipedia.com /wiki/.. 是否有任何代码可以添加到现有代码中来解决此问题?

4

3 回答 3

4

这似乎是 MediaWiki action=parseAPI 的一个缺点。事实上,有人已经提交了一项功能请求,要求提供action=parse返回完整 URL的选项。

作为一种解决方法,您可以尝试自己破坏链接(如 adil 建议的那样),或者index.php?action=render像这样使用:

只会为您提供没有 API 包装器的页面 HTML,但如果这就是您想要的,那么它应该没问题。(例如,这是InstantCommons内部用来显示远程文件描述页面的方法。)

于 2012-09-10T12:25:53.707 回答
4

您应该能够像这样修复链接:

$content = str_replace('<a href="/w', '<a href="//en.wikipedia.org/w', $content);
于 2012-09-10T07:35:31.683 回答
0

以防其他人需要替换 URL 的所有实例。

您需要使用正则表达式和g标志

/<a href="\/w/g

于 2020-01-12T11:06:17.777 回答