candysax / telegraph-node-converter

将 HTML 转换为 Telegraph 页面内容,反之亦然。

1.0.1 2024-03-04 13:48 UTC

This package is auto-updated.

Last update: 2024-09-04 15:07:47 UTC


README

此库帮助处理 Page Telegraph API 对象的内容字段。它可以将 HTML 字符串或 DOMDocument 转换为 Telegraph API 所需的格式,也可以将其转换回 HTML 字符串或 DOMDocument。

安装

要安装此库,请运行以下命令

composer require candysax/telegraph-node-converter

使用方法

将 HTML 转换为节点数组

作为转换的源数据,convertToNode 方法接受包含 HTML 标签的字符串或 DOMDocument 对象。结果可以获取为一个节点数组或其 JSON 字符串表示形式。

$nodes = HTML::convertToNode('<p>Hello <b>world</b></p>');

获取为数组

$nodes->array();
Array
(
    [0] => Array
        (
            [tag] => p
            [children] => Array
                (
                    [0] => Hello
                    [1] => Array
                        (
                            [tag] => b
                            [children] => Array
                                (
                                    [0] => world
                                )

                        )

                )

        )

)

获取为 JSON

$nodes->json();
'[{"tag":"p","children":["Hello ",{"tag":"b","children":["world"]}]}]'

将 DOMDocument 对象作为转换的数据源

$dom = new DOMDocument();
$dom->loadHTML('<p>Hello world <a href="https://example.com/">link</a></p>');

$nodes = HTML::convertToNode($dom)->json();

将节点数组转换为 HTML

作为转换的源数据,convertToHtml 方法接受节点数组或 JSON 字符串。结果可以以带有 HTML 标签的字符串或 DOM 对象的形式获取。

$html = Node::convertToHtml([
    [
        'tag' => 'p',
        'children' => [
            'Hello ',
            [
                'tag' => 'b',
                'children' => [
                    'world',
                ],

            ],
        ],
    ],
]);

获取为字符串

$html->string();
'<p>Hello <b>world</b></p>'

获取为 DOMDocument

$html->dom();
DOMDocument Object

多次转换

$input = '<p>Hello <b>world</b> <a href="https://example.com/">link</a></p>';

HTML::convertToNode($input)->convertToHtml()->convertToNode()->convertToHtml()->string();

示例

创建 Telegraph 页面

use GuzzleHttp\Client;
use Candysax\TelegraphNodeConverter\HTML;

function createPage() {
    $client = new Client();
    $client->request('POST', 'https://api.telegra.ph/createPage', [
        'form_params' => [
            'access_token' => 'your_telegraph_token',
            'title' => 'Example',
            'content' => HTML::convertToNode(
                '<p>Hello world <a href="https://example.com/">link</a></p>'
            )->json(),
        ],
    ]);
}

获取 Telegraph 页面的内容

use GuzzleHttp\Client;
use Candysax\TelegraphNodeConverter\HTML;

function getPageContent() {
    $client = new Client();
    $response = $client->request('POST', 'https://api.telegra.ph/getPage', [
        'form_params' => [
            'path' => 'path_to_the_telegraph_page',
            'return_content' => true,
        ],
    ])->getBody();
    $data = json_decode($response, true);

    return Node::convertToHtml($data['result']['content'])->string();
}

测试

可以通过运行以下命令启动测试

composer test

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件