2011-06-16 74 views
0

比如我有一个字符串:删除某些HTML标签的样式属性,并用class属性替换

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

,我想变成这样:

$string = '<div class="ImageRight">'; 
  1. 我想删除部分 style="width:150pxpreg_replace()其中 大小150可以变化,所以宽度可以是 50 0px等等。

  2. 此外,类名的最后一部分藏汉各不相同,所以类可以ImageRight,ImageLeft,ImageTop等

所以,我怎么能删除样式从与一个字符串完全属性上面提到的结构,其中唯一不同的是类名和宽度值的最后部分?

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

+0

的重要来源,以学习正则表达式:HTTP ://www.regular-expressions.info/ – 2011-06-16 12:10:09

+0

类/样式标签总是出现相同的方式? – 2011-06-16 12:10:20

+0

@James C:是的。 – Weblurk 2011-06-16 12:12:39

回答

1

我觉得这是你追求的...

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

完全删除。

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

替换:

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

您可以

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

注意做到两个步骤:(?=...)被称为超前。

0

如何:

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

简单:

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