Php 如何使用API获取带有绝对URL的Wikipedia页面HTML?

Php 如何使用API获取带有绝对URL的Wikipedia页面HTML?,php,wikipedia-api,mediawiki-api,Php,Wikipedia Api,Mediawiki Api,我正在尝试使用以下代码通过WikipediaAPI检索文章 $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); $

我正在尝试使用以下代码通过WikipediaAPI检索文章

$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'}->{'*'};
我可以查看我网站上的内容,一切都很好,但我检索到的文章中的链接有问题。如果打开url,您可以看到所有链接都以href=\”开头/ 这意味着,如果有人点击文章中的任何相关链接,它会将他重定向到www.mysite.com/wiki/(错误404),而不是en.wikipedia.com/wiki/。。
是否有任何代码可以添加到现有代码中以修复此问题?

您应该能够修复以下链接:

$content = str_replace('<a href="/w', '<a href="//en.wikipedia.org/w', $content);

$content=str_replace(“这似乎是MediaWiki
action=parse
API的一个缺点。事实上,已经有人提交了文件

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

$content = str_replace('<a href="/w', '<a href="//en.wikipedia.org/w', $content);

这只会为您提供不带API包装的HTML页面,但如果这是您想要的,那么它应该可以(例如,这是内部用于显示远程文件描述页面的方法。)

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

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

/