sereja3578/project-yii2-simple-html-dom

"PHP 简单 HTML DOM 解析器"

dev-master 2020-04-02 22:47 UTC

This package is auto-updated.

Last update: 2024-09-29 05:22:23 UTC


README

"简单 HTML Dom"(PHP 简单 HTML DOM 解析器) http://simplehtmldom.sourceforge.net"

安装

安装此扩展的首选方法是通过 composer。运行以下命令之一

php composer.phar require --prefer-dist sereja3578/project-yii2-simple-html-dom "dev-master"

或者(如果已安装 composer)

composer require --prefer-dist sereja3578/project-yii2-simple-html-dom "dev-master"

或者将以下代码添加到您的 composer.json 文件的 require 部分,并运行安装命令(Composer)

"sereja3578/project-yii2-simple-html-dom": "dev-master"

使用方法

扩展安装完成后,只需在您的代码中简单使用即可

<?php
use sereja3578\simplehtmldom\simple_html_dom;
use sereja3578\simplehtmldom\SimpleHTMLDom;
use yii\base\Component;
use yii\httpclient\Exception;
use yii\httpclient\Client;
use yii\httpclient\Request;
use yii\httpclient\Response;
use Yii;

class Parser extends Component
{
    /**
     * @var string
     */
    const BASE_URL = "https://mail.ru";

    /**
     * @var $request Request
     */
    private $request;
    /**
     * @var $request Response
     */
    private $response;
    /**
     * @var $client Client
     */
    private $client;

    /**
     * @return void
     */
    public function init()
    {
        parent::init();

        $this->client = new Client([
            "transport" => "yii\httpclient\CurlTransport",
            "baseUrl" => self::BASE_URL
        ]);
    }

    /**
     * @param string $url
     * @return bool|simple_html_dom|Exception
     */
    public function getPage(string $url)
    {
        try {
            $this->setRequest($url);
            $this->setResponse();

            if ($this->response->getStatusCode() != "200") {
                return Yii::t("http-errors", "Ресурс не доступен");
            }

            return SimpleHTMLDom::str_get_html($this->response->content);
        } catch (Exception $e) {
            return $e;
        }
    }

    /**
     * @param $url string
     * @return void
     */
    public function setRequest(string $url)
    {
        $this->request = $this->client->get($url);
    }

    public function setResponse()
    {
        $this->response = $this->request->send();
    }
?>

关于功能说明,请访问官方网站: http://simplehtmldom.sourceforge.net/