Php 从HTML中提取文本

Php 从HTML中提取文本,php,parsing,Php,Parsing,可能重复: 我试图从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

可能重复:

我试图从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>
但我真正需要的是:

$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";
    }
}
因为稍后,我将循环浏览文件夹并复制文件。

使用and for
HTML

$string='
  • '; $html=新的DOMDocument(); $html->loadHTML($string); $xpath=newdomxpath($html); $filtered=$xpath->query(“//a/@href”); foreach($过滤为$1){ 如果(strlen($one->nodeValue)>1){ echo urldecode($one->nodeValue)。“\n”; } }

    print\r(explode(“”,strip\u tags($string))
    将为您提供标记之间所有数据的数组。。。其中,
    $string
    等于输入的html。或者您可以使用
    $html->getElementsByTagName('a'),对吗?也许他只想要页面的一部分,而不是全部,他可以使用
    DOMXPath
    更轻松地搜索..这是真的,我没想到!回答得好!:)是的,我看到了
    $search\u pattern
    ,没有读其余的:)这段代码提供了我想要的一半,它只获取文件夹,我还需要文件。。正如我所说,文件夹中有一些文件,我稍后将检索它们。
    156 || /"> Parent Directory
    .ftpquota
    
    Folder 1/
    
    Folder 2/
    
    Folder N/
    
    Folder 1
    Folder 2
    Folder N
    
    $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";
        }
    }