$image
变量提供此代码(使用echo
时):
<img src="/image.png" width="100" height="147" alt="" class="some_class" />
width
,height
,src
和class
属性可以不同。我们该怎么做:
width
移除 height
和$image
alt=""
替换为alt="Poster"
感谢。
答案 0 :(得分:1)
如果属性可以变量,那么使用HTML的最佳选择是使用实际理解HTML的库,例如DOM。
$dom = new DOMDocument;
$dom->loadXML($variable);
$dom->documentElement->removeAttribute('width');
$dom->documentElement->removeAttribute('height');
$dom->documentElement->setAttribute('alt', 'poster');
echo $dom->saveXML($dom->documentElement);
输出:
<img src="http://site.com/image.png" alt="poster"/>
答案 1 :(得分:1)
$pattern = '/alt="" width="\d+" height="\d+"/i';
$replacement = 'alt="Poster"';
$variable = preg_replace($pattern, $replacement, $variable);
修复使用任何属性顺序(戈登的评论):
$pattern = '/alt=""/i';
$replacement = 'alt="Poster"';
$variable = preg_replace($pattern, $replacement, $variable);
$pattern = '/width="\d+"/i';
$replacement = '';
$variable = preg_replace($pattern, $replacement, $variable);
$pattern = '/height="\d+"/i';
$replacement = '';
$variable = preg_replace($pattern, $replacement, $variable);
答案 2 :(得分:1)
我会使用正则表达式来执行此操作。
// Replace width="..." and height="..." with nothing
$variable = preg_replace('/(width|height)\s*=\s*"[^"]*"/i', '', $image);
// Replace alt="..." with alt="Poster"
$variable = preg_replace('/alt\s*=\s*"[^"]*"/i', 'alt="Poster"', $variable);
此方法不依赖于属性的顺序,其中一些是其他答案。另请注意,第二个正则表达式将alt="<any string here>"
替换为alt="Poster"
。应该很容易将其更改为仅替换alt=""
。
答案 3 :(得分:0)
也会替换错误的<embed width="x">
。我们只需要使用<img>
标记