【问题标题】:extracting text from HTML [duplicate]从 HTML 中提取文本 [重复]
【发布时间】:2012-08-31 01:19:47
【问题描述】:

可能重复:
Grabbing the href attribute of an A element

我正在尝试从 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

因为稍后,我将遍历文件夹并复制文件。

【问题讨论】:

  • print_r (explode(' ', strip_tags($string))) 将为您提供标签之间所有数据的数组...其中$string 等于输入的html。

标签: php parsing


【解决方案1】:

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";
    }
}

Codepad Example

【讨论】:

  • 或者你可以使用$html-&gt;getElementsByTagName('a');,对吧?
  • 也许他只想要页面的一部分而不是全部,他可以使用DOMXPath 来更轻松地搜索..
  • 没错,没想到!好答案!
  • :) 是的,我看到了 $search_pattern 并没有阅读其余部分 :)
  • 这段代码提供了我想要的一半,它只是获取文件夹,我还想要文件.. 正如我所说,文件夹中有文件,我稍后会检索。
猜你喜欢
  • 2012-02-09
  • 2017-03-20
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 2019-12-16
相关资源
最近更新 更多