我正在尝试解析Google play
的html页面并获取有关应用的一些信息。 Simple-html-dom工作得很完美,但如果页面包含没有空格的代码,那么它就完全没有了属性。例如,我有html代码:
<div class="doc-banner-icon"><img itemprop="image"src="https://lh5.ggpht.com/iRd4LyD13y5hdAkpGRSb0PWwFrfU8qfswGNY2wWYw9z9hcyYfhU9uVbmhJ1uqU7vbfw=w124"/></div>
如您所见,image
和src
之间没有任何空格,因此simple-html-dom忽略src
属性并仅返回<img itemprop="image">
。如果我添加空间,它可以很好地工作。要获取此属性,请使用以下代码:
foreach($html->find('div.doc-banner-icon') as $e){
foreach($e->find('img') as $i){
$bannerIcon = $i->src;
}
}
我的问题是如何更改这个美丽的库以获取此div
的完整内部文本?
答案 0 :(得分:1)
我只是创建了为内容添加必要空格的函数:
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
函数之后使用它。所以:
$contents = file_get_contents($url, $use_include_path, $context, $offset);
$contents = placeNeccessarySpaces($contents);
希望对其他人有帮助。