如果以像素为单位定义宽度值,我想将table
宽度更改为100%
。
我的意思是如果表格宽度看起来像width="500"
或width="500px"
,那么我想用100%
替换它。
我的意思是这样width="100%"
。
有人可以帮助我使用preg_replace。
$content = 'holds all my html content';
$replace = '100%';
preg_replace($pattern,$replace,$content,-1);
有人可以帮助我$pattern
吗?
答案 0 :(得分:3)
$string = '<table width=" 600 px "></table>' ;
$pattern = '/width=["\']\s*\d+\s*(px|%)\s*["\']/' ;
$own_style = 'width="100%"' ;
$new = preg_replace($pattern, $own_style, $string) ;
这可以帮助您,但是如果您的HTML内容中没有更多宽度属性。
否则,如果任何其他元素具有属性,则其width
将设置为100%
因此,通常使用REGEXP
来处理HTML
是一种不好的做法。
答案 1 :(得分:1)
我建议不要使用preg_replace
,并举例说明使用DOM
$dom = new DOMDocument();
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName('table') as $item) {
if(strpos($item->getAttribute('width'), '%') === false) {
$item->setAttribute('width', '100%');
}
}
$content = $dom->saveHTML();
如果要将所有table
替换为宽度为100%
,请删除if
子句。目前,它会进行检查以确保width
不是基于百分比的。
修改强>
如果您不想要格式良好的HTML,您可以通过更改以下内容来获取没有body标签的正文内容:
$content = $dom->saveHTML();
要:
$content = substr($dom->saveXml($body->item(0)), 6, -7);
所以,如果你有
$content = '<table width="600px"><td>Stuff</td></table><table width="50%"><td>Stuff</td></table>';
你最终会得到:
<table width="100%"><td>Stuff</td></table><table width="50%"><td>Stuff</td></table>