我有一个维基百科网址(某种语言但不是英语),
http://ru.wikipedia.org/wiki/Liz_Claiborne,_Inc
我想将此网址转换为英文维基网址,即
http://en.wikipedia.org/wiki/Liz_Claiborne,_Inc
但是我想知道这样做最有效的方法是什么?
我尝试在字符串中搜索".wikipedia"
,并用en
替换之前的2个字符。
但是如果输入很简单,
http://wikipedia.org/wiki/Liz_Claiborne,_Inc
如何处理所有案件?
希望我对我的问题很清楚。任何帮助将不胜感激。
答案 0 :(得分:2)
这将更改现有的语言环境,或者如果缺少则添加一个:
$urls = array(
'http://wikipedia.org',
'http://ru.wikipedia.org',
'http://en.wikipedia.org',
);
$regex = '/(?<=^http:\/\/|^https:\/\/)(?:[a-z]{2}\.|\b)(?=wikipedia.org)/i';
$change = 'de';
echo '<pre>';
foreach ($urls as $url)
echo preg_replace($regex, "$change.", $url), "\n";
die;
然而,仅更改区域设置的问题在于,您将获得大量缺少的页面。重要的slu is是最后一个,大多数语言都不同:
http://en.wikipedia.org/wiki/Internet
http://fo.wikipedia.org/wiki/Alnet
http://gv.wikipedia.org/wiki/Eddyr-voggyl
所有这些页面都是关于“互联网”的,但只需更改区域设置就无法访问它们。
答案 1 :(得分:1)
我会使用正则表达式来获取您正在寻找的子字符串。一个简单的工作示例:
<?php
$regex = '@http\://.*(wikipedia\.org/.+)@';
$url = 'http://ru.wikipedia.org/wiki/Liz_Claiborne,_Inc';
preg_match($regex, $url, $matches);
echo 'http://en.'.$matches[1];
?>
答案 2 :(得分:1)
页面名称可能因语言而异,因此您不能简单地猜测网址。
适用于所有页面的唯一方法是解析维基百科页面以查找“其他语言”链接的href
值:
<li class="interwiki-en"><a href="__url__" title="__title__" hreflang="en" lang="en">English</a></li>