标签: simple-html-dom

简单的HTML Dom:如何删除元素?

我想使用Simple HTML DOM删除文章中的所有图像,这样我就可以轻松地为新闻自动收录器创建一小段文本,但我还没想出如何用它删除元素.

基本上我会这样做

  1. 获取HTML字符串的内容
  2. 从内容中删除所有图像标记
  3. 将内容限制为x个单词
  4. 输出.

有帮助吗?

php dom simple-html-dom

36
推荐指数
4
解决办法
4万
查看次数

PHP HTML DOM Parser

可能重复:
如何使用PHP解析和处理HTML?

我正在研究PHP的HTML DOM解析器.我发现了PHP Simple HTML DOM Parser.还有其他我应该看的吗?

php dom simple-html-dom

16
推荐指数
2
解决办法
2万
查看次数

简单的html dom解析器返回错误500

我正在使用此示例中的simple_html_dom.php

http://nimishprabhu.com/top-10-best-usage-examples-php-simple-html-dom-parser.html

但是我在课堂上得到了错误500,当我在浏览器中键入url时它可以正常工作吗?

我有像这样的阵列中的一些vaules

$result= Array ( 
[Avenya Group AG] => 
Array ( 
[link] => CHE-218.938.800 
[href] => http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0 ) ) 
Run Code Online (Sandbox Code Playgroud)

当我尝试这样的事情

    foreach($result as $key => $value) { 
        $xmlFind = file_get_html($value['href']);
        foreach($xmlFind->find('a') as $a) {
        echo '<p>'.$a->href.'</p>';
        }
}
Run Code Online (Sandbox Code Playgroud)

我收到了错误

遇到PHP错误严重性:警告消息:file_get_contents(http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0):失败打开流:HTTP请求失败!HTTP/1.1 500内部服务器错误文件名:libraries/Simple_html_dom.php行号:76

但是,当我像这样手动尝试

$xmlFind = file_get_html('http://zh.powernet.ch/webservices/inet/HRG/HRG.asmx/getHRGHTML?chnr=0203038402&amt=020&toBeModified=0&validOnly=0&lang=1&sort=0');
Run Code Online (Sandbox Code Playgroud)

结果就在那里,如果我输入那个网址我浏览器一切都好,只有我遇到的问题是当我尝试循环数组?

php foreach simple-html-dom

16
推荐指数
1
解决办法
1792
查看次数

file_get_contents():stream不支持搜索/什么时候PHP行为有关此更改?

PHP的行为何时发生变化?

从哪个PHP版本?


警告:file_get_contents():stream不支持在/simple_html_dom.php中搜索

警告:file_get_contents():无法在/simple_html_dom.php的流中寻找-1位置


include('parser/simple_html_dom.php');
$url = "https://en.wikipedia.org/wiki/Stack_Overflow";
$html = file_get_html($url);
if ($html !== false) {
  foreach($html->find('div#mw-content-text') as $item){
    $item->plaintext;
  }
}
Run Code Online (Sandbox Code Playgroud)

php simple-html-dom

16
推荐指数
4
解决办法
3万
查看次数

php简单的html dom解析img html5属性?

如何使用简单的html dom 解析imghtml5属性:data-original

$htmls = '<img class="lazy" alt="Nubifragio a Verbania , ferite 2 turiste  Gravi danni, chiesto stato di calamità    foto" title="Nubifragio a Verbania , ferite 2 turiste  Gravi danni, chiesto stato di calamità    foto" data-original="http://www.repubblica.it/images/2012/08/26/130634575-506cc9ae-11b8-4a53-920c-539a3811e46b.jpg" src="http://www.repubblica.it/static/images/homepage/2012/lazy.png" width="130" height="98" style="display: inline; ">';
$html = str_get_html($htmls);
$fata = $html->find('img'); 
foreach($fata as $newimage){
    echo $newimage->data-original; //0
    echo $newimage->src; //http://www.repubblica.it/static/images/homepage/2012/lazy.png
}
Run Code Online (Sandbox Code Playgroud)

我可以获得属性src,但data-original返回0

php html5 simple-html-dom

12
推荐指数
2
解决办法
1万
查看次数

str_get_html没有加载有效的html字符串

我使用curl收到一个html字符串:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html_string = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

当我echo它,我看到一个非常好的HTML,因为我需要解析我的解析需求.但是,当尝试将此字符串发送到HTML DOM PARSER方法时str_get_html($html_string),它不会上传它(从方法调用返回false).

我尝试将其保存到文件并打开file_get_html文件,但同样的事情发生.

这可能是什么原因?正如我所说,当我回应它时,html看起来非常好.

非常感谢.

代码本身:

$html = file_get_html("http://www.bgu.co.il/tremp.aspx");
$v = $html->find('input[id=__VIEWSTATE]');
$viewState = $v[0]->attr['value'];
$e = $html->find('input=[id=__EVENTVALIDATION]');
$event = $e[0]->attr['value'];

$html->clear(); 
unset($html);

$body = " A_STRING_THAT_CONTAINS_SOME_DATA " 

$ch = curl_init("http://www.bgu.co.il/tremp.aspx");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$html_string = curl_exec($ch);

$file_handle = fopen("file.txt", "w");
fwrite($file_handle, $html_string);
fclose($file_handle);

curl_close($ch);

$html = str_get_html($html_string);
Run Code Online (Sandbox Code Playgroud)

php curl simple-html-dom

10
推荐指数
2
解决办法
2万
查看次数

如何使用file_get_contents或file_get_html?

我在这里已经阅读了很多问题,我不确定我是否应该使用file_get_contentsfile_get_html为此.

我正在尝试做的就是使用PHP在我的网站上显示这个页面中的两个表:http: //www.statmyweb.com/recently-analyzed/

我知道如何获取他们的整个页面并将其显示在我的网站上当然,但我无法弄清楚如何在不获取页眉/页脚的情况下拉出这两个表格.

php file-get-contents simple-html-dom

10
推荐指数
2
解决办法
6万
查看次数

PHP简单HTML DOM解析器:仅选择具有多个类的DIV

我疯了,发现没有解决方案.问题很简单.

假设我有3个DIV:

<div class="class1">
  <div class="subclass"> TEXT1 </div>
</div>

<div class="class2">
  <div class="subclass"> TEXT2 </div>
</div>

<div class="class1 class2">
  <div class="subclass"> TEXT3 </div>
</div>
Run Code Online (Sandbox Code Playgroud)

所以,非常简单.我只是想找到TEXT3,它有BOTH class1和class2.使用简单的HTML DOM Parser,我似乎无法让它工作.

这是我试过的:

foreach($html->find("[class=class1], [class=class2]") as $item) {
$items[] =  $item->find('.subclass', 0)->plaintext;
}
Run Code Online (Sandbox Code Playgroud)

问题是,与

find("[class=class1], [class=class2]")
Run Code Online (Sandbox Code Playgroud)

它找到了所有这些,因为逗号就像一个OR,如果我留下逗号,它就是在class1中寻找嵌套的class2.我只是在找一个AND ...

编辑

感谢19greg96,我发现了这一点

div[class=class1 class2]
Run Code Online (Sandbox Code Playgroud)

工作,问题是它按顺序寻找那两个.让我说我有

<div class="class1 class2">
  <div class="subclass"> TEXT3 </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后它工作,如果我有

<div class="class1 class2 class3">
  <div class="subclass"> TEXT3 </div>
</div>
Run Code Online (Sandbox Code Playgroud)

它在我输入asterix时起作用,因为它查找子字符串:

div[class*=class1 class2]
Run Code Online (Sandbox Code Playgroud)

问题

我只知道class1和class3在那里,但也许是其他的并且是随机顺序的.那仍然行不通.知道如何以随机顺序查找A&B吗?以便

div[class=class1 class3]
Run Code Online (Sandbox Code Playgroud)

适用于那个例子?

html php parsing class simple-html-dom

9
推荐指数
1
解决办法
2万
查看次数

简单的html dom file_get_html无法正常工作 - 是否有任何解决方法?

<?php
// Report all PHP errors (see changelog)
error_reporting(E_ALL);

include('inc/simple_html_dom.php');

    //base url
    $base = 'https://play.google.com/store/apps';

    //home page HTML
    $html_base = file_get_html( $base );

    //get all category links
    foreach($html_base->find('a') as $element) {
        echo "<pre>";
        print_r( $element->href );
        echo "</pre>";
    }

    $html_base->clear(); 
    unset($html_base);

?>
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,我试图获取Play商店页面的某些元素,但它没有返回任何内容.是否有可能在服务器上禁用某些PHP功能来阻止它?

上面的代码在其他网站上完美运行.

有没有解决方法?

php file-get-contents html-parsing simple-html-dom

9
推荐指数
1
解决办法
4万
查看次数

简单的HTML Dom - 使用load_file时出现致命错误

我正在尝试解析一个HTML文件,该文件具有可怕的(相信我,它是)HTML结构,由于这个和我缺乏知识,我无法编写自己的解析器.后来我尝试使用Simple HTML Dom解析器,因为很多人(也在SO上)推荐它.

我需要simple_html_dom.php,然后创建了对象.它们似乎工作,require()函数返回"1"和var_dump() - 对象返回一个对象.

在此之后,我尝试加载URL,就像在手册中一样,但是无论我尝试了什么URL,我都会遇到致命的错误.错误如下:

Fatal error: Call to undefined function mb_detect_encoding() in 
             /home/fema/web/subdomain/devel/www_root/parser/
             simplehtmldom_1_5/simple_html_dom.php on line 988
Run Code Online (Sandbox Code Playgroud)

我检查了988号线上的内容,它是以下内容:

// Have php try to detect the encoding from the text given to us.
        $charset = mb_detect_encoding($this->root->plaintext . "ascii", 
                   $encoding_list = array( "UTF-8", "CP1252" ) );
Run Code Online (Sandbox Code Playgroud)

我知道这是关于字符编码的,但这就是全部.我还没有发现谷歌或SO上的任何相关信息.

我的整个代码是(占位符网址):

<?php

require('simplehtmldom_1_5/simple_html_dom.php');

// Create a DOM object
$dom = new simple_html_dom();

$dom->load_file('http://www.google.com/');

?>
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我该怎么办?或者在发生类似这样的事情时给出某种建议.

提前致谢.

php html-parsing fatal-error simple-html-dom

8
推荐指数
2
解决办法
6979
查看次数