Php 通过查找包含表格的跨度来设置表格的字体大小?

Php 通过查找包含表格的跨度来设置表格的字体大小?,php,regex,Php,Regex,我需要关于regex模式的帮助,它将替换/获取每个表前第一个“span”的字体大小,并在表样式定义中使用该span字体大小,但span需要没有关闭标记,而不是关闭span标记 发件人: ... 致: ... 它需要遍历所有的表,对于字体大小在某个跨度内的每个“表”,执行相同的操作。不要使用regex来解析html,使用html解析器,例如: $html=getElementsByTagName('table')作为$item){#查找html中的所有表元素 $parent=$item->

我需要关于regex模式的帮助,它将替换/获取每个表前第一个“span”的字体大小,并在表样式定义中使用该span字体大小,但span需要没有关闭标记,而不是关闭span标记

发件人:


...
致:


...

它需要遍历所有的表,对于字体大小在某个跨度内的每个“表”,执行相同的操作。

不要使用
regex
来解析
html
,使用
html
解析器,例如:

$html=getElementsByTagName('table')作为$item){#查找html中的所有表元素
$parent=$item->parentNode;#获取父节点()
$parent_style=$parent->getAttribute('style');#获取父节点的样式属性
$item->setAttribute('style',$parent_style);#将$parent_style设置为样式属性
echo$dom->saveHTML();
}

如果不是正则表达式,应该使用什么?看看链接的post-HTML解析器就是答案。这是一个很好的例子,但是我的表使用的是span中的字体大小,其中包含这个表,有没有办法获得span样式中使用的字体大小?我知道这不是正确的html语法,但这就是我获取html的方式。您需要获取
父元素
并使用
getAttribute
检索
style
的值。我已经更新了我的答案。
<span style="font-size:10px;">
<table>...</table>
</span>
<span style="font-size:10px;">
<table style="font-size:10px;">...</table>
</span>
$html = <<< EOF
<span style="font-size:10px;">
<table>...</table>
</span>
EOF;

$dom = new DOMDocument(); # create DOMDocument
$dom->loadHTML($html); # Load $html into DOMDocument

foreach ($dom->getElementsByTagName('table') as $item) { # find all table elements in html

    $parent = $item->parentNode; # get parent node (<span>)
    $parent_style = $parent->getAttribute('style'); # get style attribute for parent node
    $item->setAttribute('style', $parent_style); # set $parent_style as style attribute
    echo $dom->saveHTML();
}