我想使用Simple HTML DOM删除文章中的所有图像,这样我就可以轻松地为新闻自动收录器创建一小段文本,但我还没想出如何用它删除元素.
基本上我会这样做
有帮助吗?
可能重复:
如何使用PHP解析和处理HTML?
我正在研究PHP的HTML DOM解析器.我发现了PHP Simple HTML DOM Parser.还有其他我应该看的吗?
我正在使用此示例中的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 ) ) 
当我尝试这样的事情
    foreach($result as $key => $value) { 
        $xmlFind = file_get_html($value['href']);
        foreach($xmlFind->find('a') as $a) {
        echo '<p>'.$a->href.'</p>';
        }
}
我收到了错误
遇到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');
结果就在那里,如果我输入那个网址我浏览器一切都好,只有我遇到的问题是当我尝试循环数组?
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;
  }
}
如何使用简单的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
}
我可以获得属性src,但data-original返回0
我使用curl收到一个html字符串:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html_string = curl_exec($ch);
当我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);
我在这里已经阅读了很多问题,我不确定我是否应该使用file_get_contents或file_get_html为此.
我正在尝试做的就是使用PHP在我的网站上显示这个页面中的两个表:http: //www.statmyweb.com/recently-analyzed/
我知道如何获取他们的整个页面并将其显示在我的网站上当然,但我无法弄清楚如何在不获取页眉/页脚的情况下拉出这两个表格.
我疯了,发现没有解决方案.问题很简单.
假设我有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>
所以,非常简单.我只是想找到TEXT3,它有BOTH class1和class2.使用简单的HTML DOM Parser,我似乎无法让它工作.
这是我试过的:
foreach($html->find("[class=class1], [class=class2]") as $item) {
$items[] =  $item->find('.subclass', 0)->plaintext;
}
问题是,与
find("[class=class1], [class=class2]")
它找到了所有这些,因为逗号就像一个OR,如果我留下逗号,它就是在class1中寻找嵌套的class2.我只是在找一个AND ...
感谢19greg96,我发现了这一点
div[class=class1 class2]
工作,问题是它按顺序寻找那两个.让我说我有
<div class="class1 class2">
  <div class="subclass"> TEXT3 </div>
</div>
然后它工作,如果我有
<div class="class1 class2 class3">
  <div class="subclass"> TEXT3 </div>
</div>
它在我输入asterix时起作用,因为它查找子字符串:
div[class*=class1 class2]
问题
我只知道class1和class3在那里,但也许是其他的并且是随机顺序的.那仍然行不通.知道如何以随机顺序查找A&B吗?以便
div[class=class1 class3]
适用于那个例子?
<?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);
?>
我有上面的代码,我试图获取Play商店页面的某些元素,但它没有返回任何内容.是否有可能在服务器上禁用某些PHP功能来阻止它?
上面的代码在其他网站上完美运行.
有没有解决方法?
我正在尝试解析一个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
我检查了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" ) );
我知道这是关于字符编码的,但这就是全部.我还没有发现谷歌或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/');
?>
有人可以告诉我该怎么办?或者在发生类似这样的事情时给出某种建议.
提前致谢.
php ×10
simple-html-dom ×10
dom ×2
html-parsing ×2
class ×1
curl ×1
fatal-error ×1
foreach ×1
html ×1
html5 ×1
parsing ×1