之前使用过 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';
    }
}