-2

重複の可能性:
A 要素の href 属性を取得する

HTMLページからいくつかのフォルダ名を抽出しようとしています.HTMLのソースコードは次のようになります..

<li><a href="/"> Parent Directory</a></li>
<li><a href=".ftpquota"> .ftpquota</a></li>
<li><a href="Folder%201/"> Folder 1/</a></li>
<li><a href="Floder%202/"> Folder 2/</a></li>
<li><a href="Folder%20N/"> Folder N/</a></li>

これまでに作成したものは、いくつかのフォルダーを抽出できますが、正しく抽出されません。

これが私がやったことです..

<?php

    $url = "URL";
    $page_data = file_get_contents($url);
    $search_pattern = "<li><a href=";
    $position = 0;

    while($position = strpos($page_data,$search_pattern, $position+strlen($search_pattern)))
    {
        //$pos2 = strpos($page_data, "\"> ", $position);
        //echo $position . " - " . $pos2 . " = " . ($pos2-$position) . "<br />";
        $str = substr($page_data,$position+strlen($search_pattern)+1, $pos2-$position);
        echo "<pre>" . $position . " || " . $str . "\n</pre>";
    }

?>

copy()各フォルダーには、Windows を使用しているため、使用してコピーするいくつかのファイルが含まれているため、 wget.

ここで何が間違っているのですか??

これは私の出力です:

156 || /"> Parent Directory
.ftpquota

Folder 1/

Folder 2/

Folder N/

しかし、私が本当に必要としているのは:

Folder 1
Folder 2
Folder N

後で、フォルダーをループしてファイルをコピーします。

4

1 に答える 1

5

DOMDocumentDOMXPathを使用します。HTML

$string = '<li><a href="/"> Parent Directory</a></li>
<li><a href=".ftpquota"> .ftpquota</a></li>
<li><a href="Folder%201/"> Folder 1/</a></li>
<li><a href="Floder%202/"> Folder 2/</a></li>
<li><a href="Folder%20N/"> Folder N/</a></li>
<li><a href="file.bin"> file.bin</a></li>';

$html = new DOMDocument(); 
$html->loadHTML($string);
$xpath = new DOMXPath($html);
$filtered = $xpath->query("//a/@href");

foreach($filtered as $one){
    if(strlen($one->nodeValue) > 1) {
        echo urldecode($one->nodeValue)."\n";
    }
}

コードパッドの例

于 2012-09-06T08:58:40.337 に答える