从文档中的某些HTML标记中删除样式属性,并使用class属性替换

时间:2011-06-16 12:07:31

标签: php regex preg-replace

例如我有一个字符串:

$string = '<div class="ImageRight" style="width:150px">';

我想转换成这个:

$string = '<div class="ImageRight">';
  1. 我想删除该部分 style="width:150px preg_replace()其中{{1}} 尺寸150可以变化,所以宽度可以 500px等。

  2. 此外,类名的最后一部分也是如此,因此该类可以是ImageRight,ImageLeft,ImageTop等。

  3. 那么,如何从具有上述结构的字符串中完全删除样式属性,其中唯一不同的是类名的最后部分和宽度值?

    编辑:我拥有的ACTUAL字符串是一个完整的html文档,我不想从整个html中删除style属性,只能从与上面显示的字符串匹配的标记中删除。

5 个答案:

答案 0 :(得分:1)

我认为这就是你所追求的......

$modifiedHtml = preg_replace('/<(div class="Image[^"]+") style="[^"]+">/i', '<$1>', $html);

答案 1 :(得分:0)

完全删除。

$string = preg_replace("/style=\"width:150px\"/", "", $string);

替换:

$string = preg_replace("/style=\"width:150px\"/", "style=\"width:500px\"", $string);

答案 2 :(得分:0)

您可以使用

分两步完成
$place = 'Left';
$size = 500;
$string = preg_replace('/(?<=class="image)\W(?=")/',$place,$string);
$string = preg_replace('/(?<=style="width:)[0-9]+(?=")/',$size,$string);

注意:(?=...)被称为前瞻。

答案 3 :(得分:0)

怎么样:

$string = preg_replace('/(div class="Image.+?") style="width:.+?"/', "$1", $string);

答案 4 :(得分:0)

简单:

$string  = preg_replace('/<div class="Image(.*?)".*?>/i', '<div class="Image$1">', $string);