【发布时间】:2011-12-28 02:21:07
【问题描述】:
如何获取每个元素属性的宽度和高度?
例如,
$dom = new DOMDocument;
$dom->loadHTML('<div class="item" style="width:295px; height:210px; border:1px solid #000;"></div><div></div>');
foreach( $dom->getElementsByTagName('div') as $node )
{
$style = $node->getAttribute( 'style' );
var_dump($style);
}
结果,
string 'width:295px; height:210px; border:1px solid #000;' (length=49)
string '' (length=0)
但这些是我所追求的,
- 只选择类名为
item的div。 - 仅获取
295(宽度)和210(高度)。
DOM 可以吗?还是 XPATH?
编辑:
我现在似乎设法选择了带有类名的 div,
$dom = new DOMDocument;
$dom->loadHTML('<div class="item" style="width:295px; height:210px; border:1px solid #000;"></div><div></div>');
$xpath = new DOMXpath($dom);
foreach ($xpath->query('//*[@class="item"]') as $node) {
$style = $node->getAttribute( 'style' );
var_dump($style);
}
现在这就是我所追求的,
得到295(宽度)和210(高度)。
【问题讨论】:
-
stackoverflow.com/questions/3448005/… 将回答有关 XPath 抓取具有特定类属性的 div 的部分。您需要常规的字符串函数或 CSS 解析器来分解内联样式。这不是 DOM 的域。
-
stackoverflow.com/questions/4432334/… 回答如何使用正则表达式解析内联样式
-
在旁注中获取带有项目类属性的div的样式属性,您也可以使用
//div[@class="item"]/@style。这将返回一个 DOMAttr。
标签: php php-5.3 domdocument domxpath getattribute