simbiat/lodestone-parser

FFXIV Lodestone解析器,PHP编写

1.1.18+20240716 2024-07-16 04:27 UTC

README

这是一个PHP库,用于直接从FFXIV Lodestone网站解析数据,最初基于由@viion开发的版本,但现在已完全重写。之前是其分支

目标是提供一个非常快速且轻量级的库,它是为了解析尽可能多的字符而构建的,重点是:低内存占用和微时间解析方法。

注意

  • 此库解析实时Lodestone网站。该网站位于东京。
  • 此库在PHP 8及以上版本构建,请使用最新版本,因为这可以提高性能。

有什么不同?

这是与@viion原始库的不同之处。

  • 它具有不同的代码结构,旨在减少很少使用或不必要的函数,并进行一些标准化。
  • 使用正则表达式而不是完整的HTML解析以提高速度(并以数组而不是对象作为结果)。这并不意味着这总是比使用基于Symphony的函数更快,但平均来说是这样的。
  • 更多搜索查询的过滤器。
  • 尽可能返回更多可能有用的信息。
  • 尝试支持多语言。某些过滤器甚至支持Lodestone上实际使用的“名称”(而不仅仅是ID)。
  • 能够“链接”不同类型的实体,请求一个对象中的多个页面。例如,您可以在同一个对象中获取公司及其成员的详细信息。

设置

可以设置自己的CURL UserAgent:只需使用->setUseragent('useragent')

也可以通过->setLanguage('na')更改LodeStone语言。接受的语言值是naeujpfrde

可以通过->setBenchmark(true)使用基准测试来获取每个迭代的解析时间。

错误处理

在新的概念中,致命错误通常只可能在HTTP请求期间发生。为了不破坏“链接”功能,它们在代码中被软处理,并报告给->errors->lasterror数组。本质上,当发生错误时,您将简单地得到特定实体的一个空结果,并且它不会被添加到输出中。

要获取最后一个错误,可以使用->getLastError($close)。要获取所有错误的列表,请使用-getErrors($close)$close是一个预期的布尔值,如果设置为true,将关闭cURL句柄。默认设置为false,基于假设您只是使用这些进行某种类型的验证。

所有页面

所有接受page编号的解析器都支持0值,这将返回所有页面(即递归运行相应的解析器)。page的默认值设置为1以限制使用的资源。

测试脚本

存在一个 \Simbiat\LodestoneTest 类,用于测试在一般场景下运行所有可用功能。运行它以获取表格格式的输出格式化和每种测试类型的样本。注意,最后两个测试是“错误测试”,因此其结果有意颠倒,以保证报告的一致性。另外,由于成就测试有意将 details 设置为 true 并以 All pages 模式运行 Free Company 成员,因此其基准结果将以时间列表的形式呈现。

获取结果

要获取以下解析器的结果,您需要运行 ->getResult($close),这将返回包含结果的数组。$close 是一个预期的布尔值,如果设置为 true,则将关闭 cURL 处理。默认设置为 true,基于假设,获取结果将是您的最后一个动作。

注意:如果您根本未调用 ->getResult($close) 或仅以 false 调用它,建议显式取消设置您正在使用的对象,除非您需要释放资源。

解析器