2016-11-30 8 views
0

私はsimple_html_dom.phpを使用して、ウェブページからhrefのすべての値を取得します。 これは私のコードです:simple_html_dom.phpを使って 'a'タグからの実際のリンクを取得するには?

<?php 
    include_once('simple_html_dom.php'); 
    $url=$_GET['url']; //this is the target website address (for example, http://127.0.0.1/mysite/default.php?url=https://www.google.com) 

    if($url){ 
     $html = file_get_html($url); 
     foreach($html->find('a') as $e) { 
      echo $e->href . '<br>'; 
     } 
    } 
?> 

しかし...問題が出力されます。このような出力は、​​,/domainsなど、または//en.wikipedia.org,//ro.wikipedia.orgなどです。

これらの出力を標準URLに変換する方法(例:http://www.example.com/aboutまたはhttps://www.example.com/pageなど)?

+0

これは、直接 'HTML'テキストを解析します。したがって、 '/ page'と書かれていれば' https:// www.example.com/page'を得ることができません。ドメインまたはプロトコルを手動で追加する必要があります。 URLのどの部分が欠落しているかを確認するには、 'parse_url'関数を使用してください。 –

+0

どうすればいいですか? –

+0

の答えをご覧ください。 –

答えて

0
/** 
* @param $href string URL To Convert 
* @param $base_url string Remote server's base url. Like wikipedia.org (without http or https) 
*/ 
function convert_url($href, $base_url = NULL){ 
    $parse = parse_url($href); 
    $host = array_key_exists('host', $parse) ? $parse['host'] : $base_url; 
    $path = array_key_exists('path', $parse) ? $parse['path'] : '/'; 
    $queryStr = array_key_exists('query', $parse) ? '?'.$parse['query'] : ''; 
    $scheme = array_key_exists('scheme', $parse) ? $parse['scheme'].'://' : 'http://'; 
    return $scheme.$host.$path.$queryStr; 
} 
0

このような何か:

include_once('simple_html_dom.php'); 
$url = isset($_GET['url']) ? $_GET['url'] : ''; 
$parsedUrl = parse_url($url); 

if (!empty($parsedUrl['scheme']) && !empty($parsedUrl['host'])) { 
    $html = file_get_html($url); 
    foreach ($html->find('a') as $link) { 
     $l = http_build_url($link->href, [ 
      'scheme' => $parsedUrl['scheme'], 
      'host' => $parsedUrl['host'] 
     ]); 
     echo $l . '<br>'; 
    } 
} 

詳細については、機能http_build_urldocumentationを参照してください。

+0

致命的なエラーが発生しました..致命的なエラー:未定義の関数を呼び出すhttp_build_url() –

+0

拡張子 'php_http.dll'(またはlinuxの場合は' php_http.so')を有効にする必要があります。 http://stackoverflow.com/questions/14056977/function-http-build-url#answer-14057205 –

関連する問題