PHP 使用 DOM 解析器获取自定义属性值
PHP get custom attribute value with DOM parser
我使用simple dom parser进行了一些抓取,但未能获得自定义属性(颜色)。我能够获得其他值,例如 h3 的内部文本。
我的dom很简单,看起来像这样
<article data-color="red">
<h1>Hi </h1>
</article>
<article data-color="blue">
<h1>Hi 2</h1>
</article>
<article data-color="gold">
<h1>Hi 3</h1>
</article>
到目前为止我的代码
$dom = $html->find('article');
$arr = array();
foreach ($dom as $data) {
if(isset($data->find('h3',0)->plaintext)){
$h3 = $data->find(h3',0)->plaintext;
}
}
$arr[] = array(
"title" => $h3,
/* "color" => $color */
);
echo json_encode(array_values($arr));
如果您关注数据属性 属性,并且由于 DOM
元素属性被视为该 [=13=] 对象的属性,只需像往常一样使用花括号处理带连字符的属性:
$object->{'property-with-a-hyphen'}
因此,当您在代码中应用它时:
foreach($dom as $data) {
$color = '';
if(isset($data->{'data-color'})) {
$color = $data->{'data-color'};
}
// array declarations below
$arr[] = array(
'color' => $color,
);
}
我使用simple dom parser进行了一些抓取,但未能获得自定义属性(颜色)。我能够获得其他值,例如 h3 的内部文本。
我的dom很简单,看起来像这样
<article data-color="red">
<h1>Hi </h1>
</article>
<article data-color="blue">
<h1>Hi 2</h1>
</article>
<article data-color="gold">
<h1>Hi 3</h1>
</article>
到目前为止我的代码
$dom = $html->find('article');
$arr = array();
foreach ($dom as $data) {
if(isset($data->find('h3',0)->plaintext)){
$h3 = $data->find(h3',0)->plaintext;
}
}
$arr[] = array(
"title" => $h3,
/* "color" => $color */
);
echo json_encode(array_values($arr));
如果您关注数据属性 属性,并且由于 DOM
元素属性被视为该 [=13=] 对象的属性,只需像往常一样使用花括号处理带连字符的属性:
$object->{'property-with-a-hyphen'}
因此,当您在代码中应用它时:
foreach($dom as $data) {
$color = '';
if(isset($data->{'data-color'})) {
$color = $data->{'data-color'};
}
// array declarations below
$arr[] = array(
'color' => $color,
);
}