PHP替换变量中的文本

时间:2010-07-04 17:40:25

标签: php regex replace preg-replace

$image变量提供此代码(使用echo时):

<img src="/image.png" width="100" height="147" alt="" class="some_class" />
  • widthheightsrcclass 属性可以不同。

我们该怎么做:

  1. width移除 height$image
  2. alt=""替换为alt="Poster"
  3. 感谢。

4 个答案:

答案 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>标记