2016-02-29 37 views
2

我需要幫助,使用php script從互聯網上下載網頁。但是現在我有從網上下載網頁的腳本。但它正在下載像index.html名稱一樣具有相同名稱的網頁。用不同的名稱下載html頁面

我想用自己的名字下載網頁中的URL。就像公司簡介頁面下載與aboutus.html

<!doctype html> 
    <html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Document</title> 
    </head> 
    <body> 
    <form method="post"> 
     <input name="url" size="50" placeholder="URL" /> 
     <input name="submit" type="submit" /> 
    </form> 
    </body> 
    </html> 
    <?php 
    // maximum execution time in seconds 
    set_time_limit (24 * 60 * 60); 

    if (isset($_POST['submit'])) { 

     $url = parse_url($_POST['url']); 
     $folder = $url['host']; 
     if (array_key_exists('path', $url)) { 
      $file = explode('.', str_replace('/', '', $url['path'])); 
      $file .= '.html'; 
     } else { 
      $file = 'index.html'; 
     } 
     if (!sizeOf(glob($folder))) { 
      mkdir($folder); 
     } 
     file_put_contents($folder . '/' . $file, fopen($_POST['url'], 'r')); 
    } 
    ?> 
+0

這一切都在一個單一的腳本?或者,HTML部分在一個文件中,PHP部分在其他文件中? –

+0

全部在單個文件中 –

+0

分爲兩部分。將PHP代碼放在一個文件中,比如說urldownloader.php,然後在你的HTLP部分添加更改

爲。然後再測試一次。 –

回答

2

試試這個:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
<form method="post"> 
    <input name="url" size="50" placeholder="URL" /> 
    <input name="submit" type="submit" /> 
</form> 
</body> 
</html> 
<?php 
// maximum execution time in seconds 
set_time_limit (24 * 60 * 60); 

function get_title($url){  
    $str = file_get_contents($url); 

    if(strlen($str)>0){ 
    libxml_use_internal_errors(true); 
    $dom = new DOMDocument; 
    $dom->loadHTML($str); 
    $title = $dom->getElementsByTagName("title"); 
    $titleText = 'index'; 
    if($title && $title->length){ 
     $titleText = $title[0]->textContent; 
    } 

    libxml_use_internal_errors(false); 
    return $titleText; 
    } 
} 

if (isset($_POST['submit'])) { 

    $url = parse_url($_POST['url']); 
    $folder = $url['host']; 
    if (array_key_exists('path', $url)) { 
     $file = get_title($_POST['url']); 
     $file .= '.html'; 
    } else { 
     $file = 'index.html'; 
    } 
    if (!sizeOf(glob($folder))) { 
     mkdir($folder); 
    } 
    file_put_contents($folder . '/' . $file, fopen($_POST['url'], 'r')); 
} 
?> 
+0

感謝Adolfo garza現在的工作, –

+0

@kamaljot雖然它的工作,最好不要使用它 – Trix

+0

是的,它給我的問題下載https:相關的網址 –

1

注意

需求PHP Simple HTML DOM Parser

根據

,並與answer provided by Adolfo Garza相反,使用正則表達式是不是HTML的好主意,使用DOM解析器而不是

<?php 
function get_title($url){ 
    $html = new simple_html_dom(); 
    $html->load_file($url); 
    $title = $html->find('title'); 
    return $title->plaintext; 
} 
if(isset($_POST['submit'])){ 
    $url = parse_url($_POST['url']); 
    $folder = $url['host']; 
    if(array_key_exists('path', $url)){ 
     $file = get_title($_POST['url']); 
     $file .= '.html'; 
    }else{ 
     $file = 'index.html'; 
    } 
    if(!sizeOf(glob($folder))){ 
     mkdir($folder); 
    } 
    file_put_contents($folder . '/' . $file, fopen($_POST['url'], 'r')); 
}?> 
<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
<form method="post"> 
    <input name="url" size="50" placeholder="URL" /> 
    <input name="submit" type="submit" /> 
</form> 
</body> 
</html> 
相關問題