WP_HTML_Attribute_Token
云策文档标注
概述
WP_HTML_Attribute_Token 是 WP_HTML_Tag_Processor 内部使用的核心类,作为属性令牌的数据结构,旨在显著提升 HTML 处理性能。它通过存储属性在 HTML 字符串中的位置和元数据,优化解析效率。
关键要点
- 该类是 WP_HTML_Tag_Processor 的内部组件,开发者通常不直接实例化。
- 属性包括 name(属性名)、value_starts_at(值起始位置)、value_length(值长度)、start(属性起始位置)、length(属性总长度)和 is_true(布尔属性标志)。
- 从 6.5.0 版本起,用 length 替换 end 以更匹配 substr() 行为,改进字符串操作。
- 构造函数接收六个参数来初始化这些属性,支持布尔、引用和非引用属性的处理。
代码示例
public function __construct( $name, $value_start, $value_length, $start, $length, $is_true ) {
$this->name = $name;
$this->value_starts_at = $value_start;
$this->value_length = $value_length;
$this->start = $start;
$this->length = $length;
$this->is_true = $is_true;
}注意事项
- length 属性表示属性在 HTML 中的总字节跨度,覆盖名称和值(如适用),需根据属性类型(布尔、引用或非引用)正确计算。
- 该类自 6.2.0 版本引入,主要用于底层 HTML 解析,开发者应通过 WP_HTML_Tag_Processor 接口操作。
原文内容
Core class used by the HTML tag processor as a data structure for the attribute token, allowing to drastically improve performance.
Description
This class is for internal usage of the WP_HTML_Tag_Processor class.
See also
Methods
| Name | Description |
|---|---|
| WP_HTML_Attribute_Token::__construct | Constructor. |
Source
class WP_HTML_Attribute_Token {
/**
* Attribute name.
*
* @since 6.2.0
*
* @var string
*/
public $name;
/**
* Attribute value.
*
* @since 6.2.0
*
* @var int
*/
public $value_starts_at;
/**
* How many bytes the value occupies in the input HTML.
*
* @since 6.2.0
*
* @var int
*/
public $value_length;
/**
* The string offset where the attribute name starts.
*
* @since 6.2.0
*
* @var int
*/
public $start;
/**
* Byte length of text spanning the attribute inside a tag.
*
* This span starts at the first character of the attribute name
* and it ends after one of three cases:
*
* - at the end of the attribute name for boolean attributes.
* - at the end of the value for unquoted attributes.
* - at the final single or double quote for quoted attributes.
*
* Example:
*
* <div class="post">
* ------------ length is 12, including quotes
*
* <input type="checked" checked id="selector">
* ------- length is 6
*
* <a rel=noopener>
* ------------ length is 11
*
* @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`.
*
* @var int
*/
public $length;
/**
* Whether the attribute is a boolean attribute with value `true`.
*
* @since 6.2.0
*
* @var bool
*/
public $is_true;
/**
* Constructor.
*
* @since 6.2.0
* @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`.
*
* @param string $name Attribute name.
* @param int $value_start Attribute value.
* @param int $value_length Number of bytes attribute value spans.
* @param int $start The string offset where the attribute name starts.
* @param int $length Byte length of the entire attribute name or name and value pair expression.
* @param bool $is_true Whether the attribute is a boolean attribute with true value.
*/
public function __construct( $name, $value_start, $value_length, $start, $length, $is_true ) {
$this->name = $name;
$this->value_starts_at = $value_start;
$this->value_length = $value_length;
$this->start = $start;
$this->length = $length;
$this->is_true = $is_true;
}
}
User Contributed Notes
You must log in before being able to contribute a note or feedback.