我正在尝试从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
原因稍后,我将遍历文件夹并复制文件。
答案 0 :(得分:5)
对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";
}
}