我有一个包含一些相对网址(file.html)和绝对网址(http://website.com/index.html)的数组。
我正在尝试将它们转换为绝对网址。
所以,我所做的就是遍历数组并检查URL是否是绝对的。如果是,则将其添加到仅包含绝对URL的新数组中。
如果它不是绝对URL,我从当前URL获取域名并将其连接到相对URL;因此,将其设为绝对URL,然后将其添加到仅包含绝对URL的数组中。
但是,当我浏览绝对URL数组时,我注意到了一些相对的URL。
我做错了什么?
foreach($anchors as $anchor){
if(preg_match('/(?:https?:\/\/|www)[^\'\" ]*/i', (string)($anchor))){
//has absolute URL
//add to array
array_push($matchList, (string)($anchor));
}
else{
//has relative URL
//change to absolute
//add to array
$urlPrefix = preg_match('/(?:https?:\/\/|www)[^\/]*/i', $url);
$absolute = (string)(((string)$urlPrefix).((string)($anchor)));
array_push($matchList, $absolute);
}
}
答案 0 :(得分:1)
这不是preg_match()的工作方式(它不会返回它匹配的内容,它在没有匹配时返回0,如果匹配则返回1):
$urlPrefix = preg_match('/(?:https?:\/\/|www)[^\/]*/i', $url);
你需要这样做:
preg_match('/(?:https?:\/\/|www)[^\/]*/i', $url, $matches);
urlPrefix = $matches[0];
请参阅preg_match()