首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simple-html-dom跳过属性

Simple-html-dom跳过属性
EN

Stack Overflow用户
提问于 2013-06-20 20:07:58
回答 1查看 512关注 0票数 1

我正在尝试解析Google play的html页面,并获得一些关于应用程序的信息。Simple-html-dom可以完美地工作,但是如果页面包含没有空格的代码,它将完全忽略属性。例如,我有html代码:

代码语言:javascript
复制
<div class="doc-banner-icon"><img itemprop="image"src="https://lh5.ggpht.com/iRd4LyD13y5hdAkpGRSb0PWwFrfU8qfswGNY2wWYw9z9hcyYfhU9uVbmhJ1uqU7vbfw=w124"/></div>

如您所见,imagesrc之间没有任何空格,因此simple-html-dom忽略src属性,只返回<img itemprop="image">。如果我添加空格,它就能完美地工作。要获取此属性,我使用以下代码:

代码语言:javascript
复制
foreach($html->find('div.doc-banner-icon') as $e){          
        foreach($e->find('img') as $i){
            $bannerIcon = $i->src;              
        }
}

我的问题是如何更改这个漂亮的库以获得此div的完整内部文本

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-20 22:20:01

我只是创建了一个函数,将必要的空间添加到内容中:

代码语言:javascript
复制
function placeNeccessarySpaces($contents){
$quotes = 0; $flag=false;
$newContents = '';
for($i=0; $i<strlen($contents); $i++){
    $newContents.=$contents[$i];
    if($contents[$i]=='"') $quotes++; 
    if($quotes%2==0){
        if($contents[$i+1]!== ' ' && $flag==true) {             
            $newContents.=' ';
            $flag=false;
        }           
    }
    else $flag=true;        
}   
return $newContents;
}

然后在file_get_contents函数之后使用它。所以:

代码语言:javascript
复制
$contents = file_get_contents($url, $use_include_path, $context, $offset);
$contents = placeNeccessarySpaces($contents);

希望能对其他人有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17213286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档