-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 回答