candysax / telegraph-node-converter
将 HTML 转换为 Telegraph 页面内容,反之亦然。
1.0.1
2024-03-04 13:48 UTC
Requires
- php: >=7.3
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^9
README
此库帮助处理 Page Telegraph API 对象的内容字段。它可以将 HTML 字符串或 DOMDocument 转换为 Telegraph API 所需的格式,也可以将其转换回 HTML 字符串或 DOMDocument。
- Telegraph API 文档:https://telegra.ph/api
安装
要安装此库,请运行以下命令
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)。有关更多信息,请参阅许可证文件。