Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用URL获取元素的特定内容块_Php_File Get Contents - Fatal编程技术网

在PHP中使用URL获取元素的特定内容块

在PHP中使用URL获取元素的特定内容块,php,file-get-contents,Php,File Get Contents,可能重复: 我知道file_get_contents(url)方法,但我想知道的是,可能首先使用file_get_contents(url)来提取页面的内容,然后是否有一些方法/函数可以从使用file_get_contents(url)获得的内容中提取或获取特定的内容块?以下是一个示例: 因此,代码如下所示: $pageContent = file_get_contents('http://www.pullcontentshere.com/'); 这将是$pageContent <ht

可能重复:

我知道file_get_contents(url)方法,但我想知道的是,可能首先使用file_get_contents(url)来提取页面的内容,然后是否有一些方法/函数可以从使用file_get_contents(url)获得的内容中提取或获取特定的内容块?以下是一个示例:

因此,代码如下所示:

$pageContent = file_get_contents('http://www.pullcontentshere.com/');
这将是
$pageContent

<html> <body>
    <div id="myContent">
        <ul>    
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div> 
</body> </html>
因此,输出将如下所示:

$content = function_here($pageContent);
        <div id="myContent">
            <ul>    
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div> 
// Create DOM from url
$html = file_get_html('http://www.pullcontentshere.com');
// Use a selector to reach the content you want
$myContent = $html->find('div.myContent')->plaintext;


非常感谢您的回答

您需要使用XML解析来解决问题。我向您推荐SimpleXML,它已经是php的一部分了。下面是一个例子:

$sitecontent = "
<html>   
   <body>
      <div>
         <ul>    
            <li></li>
            <li></li>
            <li></li>
         </ul>
      </div> 
   </body> 
 </html>";

 $xml = new SimpleXMLElement($sitecontent);
 $xpath = $xml->xpath('//div');

 print_r($xpath);
$sitecontent=”
"; $xml=新的SimpleXMLElement($sitecontent); $xpath=$xml->xpath('//div'); 打印(xpath);
另一种方法是使用regex

<?php

$string = '<html> <body> 
    <div id="myContent"> 
        <ul>     
            <li></li> 
            <li></li> 
            <li></li> 
        </ul> 
    </div>  
</body> </html>';

if ( preg_match ( '/<div id="myContent"(.*?)<\/div>/s', $string, $matches ) )
{
    foreach ( $matches as $key => $match )
    {
        echo $key . ' => ' . htmlentities ( $match ) . '<br /><br />';
    }
}
else
{
    echo 'No match';
}

?>


实例:

您可以使用内置的SimpleXMLElement,如nullpointr的答案中所述,也可以使用正则表达式。 另一个我通常认为很简单的解决方案是。您可以在这个库中使用jQuery样式选择器。代码的简单示例如下所示:

$content = function_here($pageContent);
        <div id="myContent">
            <ul>    
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div> 
// Create DOM from url
$html = file_get_html('http://www.pullcontentshere.com');
// Use a selector to reach the content you want
$myContent = $html->find('div.myContent')->plaintext;

您可以使用
DOMDocument
:您好,我喜欢您的答案,简短明了。但当我尝试它时,它显示为文本而不是html输出。您知道如何使其作为html显示工作吗?@PHPNoob是的,只需删除htmlentities()函数