使用 simple_html_dom 库解析 html 内容
之前使用过 simple_html_dom
这一类库做解析,这一类库本身并不大,可以直接引入文件,让后封装到 helper 或者全局函数库里以备随时使用。
下载文件:simple_html_dom.txt ,下载后将文件后缀修改为 .php
即可。
github 原始地址:samacs/simple_html_dom
github 最新维护地址:Simple Html Dom Parser for PHP ,可通过 composer 引入。
simple_html_dom
有两个主要的操作函数(我这里用的是老版本,单个文件引入):str_get_html()
和 file_get_html()
。从函数名称也可以看出来,前者是从字符串中解析出 html 对象,后者数据来源于文件。
需求:从富文本内容中获取第一个图片作为文章列表的展示图片。
代码实现(基于 destoon 的封装,使用函数 str_get_html()
,位置:全局函数库):
function quoteimgurl($itemid = 0, $url = '') {
global $db,$DT_PRE;
if (empty($url) && $itemid != 0) {
$data = $db->get_one("SELECT content FROM {$DT_PRE}article WHERE itemid={$itemid}");
include DT_ROOT.'/include/simple_html_dom.php';
$html = str_get_html($data['content']);
foreach ($html->find('img') as $img) {
$url = $img->src;
break;
}
}
return imgurl($url);
}
function imgurl($url = '', $width = '') {
if($url) {
return strpos($url, '://') === false ? DT_PATH.'file/upload/'.$url : $url;
} else {
return DT_SKIN.'image/nopic'.$width.'.gif';
}
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。