使用PHP删除表内联样式

时间:2014-02-16 12:21:32

标签: php html html-table

是否有一种简单的方法可以使用PHP从表中删除内联样式和属性。

例如,从下面的代码中删除class,style,width,height:

<tr class=xl96 height=30 style='mso-height-source:userset;height:23.1pt'>
<td height=30 class=xl99 style='height:23.1pt;border-top:none'>9</td>
<td class=xl100 style='border-top:none;border-left:none'>46333</td>
<td class=xl101 style='border-top:none;border-left:none'>&yen;698</td>
<td class=xl99 style='border-top:none;border-left:none'>48</td>
<td class=xl100 style='border-top:none;border-left:none'>2077988</td>
<td class=xl101 style='border-top:none;border-left:none'>&yen;698</td>
<td class=xl98></td>
<td class=xl96></td>
<td class=xl96></td>
</tr>

预期结果:

<tr>
<td>9</td>
<td>46333</td>
<td>&yen;698</td>
<td>48</td>
<td>2077988</td>
<td>&yen;698</td>
<td></td>
<td></td>
<td></td>
</tr>

5 个答案:

答案 0 :(得分:5)

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

foreach($doc->getElementsByTagName('*') as $node) 
{ 
    $node->removeAttribute('height'); 
    $node->removeAttribute('style'); 
    $node->removeAttribute('class');
} 

$doc->removeChild($doc->firstChild);
$doc->replaceChild($doc->firstChild->firstChild->firstChild, $doc->firstChild);

echo $doc->saveHTML(); 

输出

<tr><td>9</td> <td>46333</td> <td>&yen;698</td> <td>48</td> <td>2077988</td> 
<td>&yen;698</td> <td></td> <td></td> <td></td> </tr> 

答案 1 :(得分:0)

$yourVariable= preg_replace('#(<[a-z ]*)(style=("|\')(.*?)("|\'))([a-z ]*>)#', '\\1\\6', $yourVariable);

试试吧

答案 2 :(得分:0)

我能想象的唯一方法就是:

<?php 
    $styles = ' style="border-top:none;border-left:none;"';

    echo '<tr class=xl96 height=30 style='mso-height-source:userset;height:23.1pt'>
              <td height=30 class=xl99 style='height:23.1pt;border-top:none'>9</td>
              <td class=xl100'.$style.'>46333</td>
              <td class=xl101'.$style.'>&yen;698</td>
              <td class=xl99'.$style.'>48</td>
              <td class=xl100'.$style.'>2077988</td>
              <td class=xl101'.$style.'>&yen;698</td>
              <td class=xl98></td>
              <td class=xl96></td>
              <td class=xl96></td>
          </tr>


?>

或使用正则表达式。

答案 3 :(得分:0)

或者您将此附加到您的CSS:

Table
{ 
    border-top:auto !important;
    border-left:auto !important; 
    Height:auto !important; 
}

答案 4 :(得分:0)

此常规表达式只用空标记替换所有元素属性。 为了说明这种表达方式是如何工作的,我使用了Sublime Text 3文本编辑器。

第一个圆括号选择<的字符和带有\w+第一个单词。这是我们的$1。然后,我们只需要选择>之前的所有东西,然后将其替换为<$1>。很简单的。您可以为此使用php preg_replace函数。

<(\w+) 

enter image description here

查找:

<(\w+).*?>

替换:

<$1>

之前: enter image description here 后: enter image description here