lubo_comment_query/app/Util/DanmakuUtil.php
2023-01-06 10:41:44 +08:00

33 lines
960 B
PHP

<?php
namespace App\Util;
use SplFileInfo;
class DanmakuUtil
{
public static function parse_danmaku(string $file): array
{
$document = new \DOMDocument();
$document->load($file);
$danmaku_items = $document->getElementsByTagName("d");
$result = [];
/** @var \DOMNode $item */
foreach ($danmaku_items as $item) {
$paramsNode = $item->attributes->getNamedItem("p");
$param_list = mb_split(",", $paramsNode->value);
if (sizeof($param_list) < 7) {
throw new \Exception("弹幕格式异常");
}
$userNode = $item->attributes->getNamedItem("user");
$result[] = [
"from" => $userNode->value,
"from_mid" => $param_list[6],
"content" => $item->textContent,
"created_at" => intval($param_list[4])/1000,
];
}
return $result;
}
}