一般上来说,a标签的链接有两种形式:1、绝对路径;2、相对路径。收罗数据时城市遇到如此的两种链接形式。
对付绝对路径的链接就很简朴。相对路径需要批改才气获得完整URL,以下是一个批改相对路径的php函数。
<?php /** * 批改相对路径 * * @param string $base_url * @param array $url_list * @return array */ function _reviseUrl($base_url, $url_list) { $url_info = parse_url($base_url); $base_url = $url_info["scheme"] . '://'; if ($url_info["user"] && $url_info["pass"]) { $base_url .= $url_info["user"] . ":" . $url_info["pass"] . "@"; } $base_url .= $url_info["host"]; if ($url_info["port"]) { $base_url .= ":" . $url_info["port"]; } $base_url .= $url_info["path"]; print_r($base_url); if (is_array($url_list)) { foreach ($url_list as $url_item) { if (preg_match('/^http/', $url_item)) { // 已经是完整的url $result[] = $url_item; } else { // 不完整的url $real_url = $base_url . '/' . $url_item; $result[] = $real_url; } } return $result; } else { return; } } //以下是测试内容 $host = 'http://enenba.com'; $url_list = array( 'http://enenba.com/?post=148', '?post=120', 'content/uploadfile/201205/7f8d00d2b9631e9f051b53e4a863a0db20120506053402.htm' ); $r = _reviseUrl($host,$url_list); printf("<p>输出数据为:</p><pre>%s</pre>\n",var_export( $r ,TRUE)); ?>一样的成果文章:
《PHP收罗链接,相对链接转为绝对链接》
《PHP将一个URL转换为完整URL(相对路径转绝对路径)》