Php 从文档中的某些HTML标记中删除样式属性,并替换为类属性

Php 从文档中的某些HTML标记中删除样式属性,并替换为类属性,php,regex,preg-replace,Php,Regex,Preg Replace,例如,我有一个字符串: $string = '<div class="ImageRight" style="width:150px">'; $string=''; 我想将其转化为: $string = '<div class="ImageRight">'; $string=''; 我想去掉那部分 style=“width:150px带有preg\u replace()其中 尺寸150可以不同,因此宽度可以不同 500px等 此外,类名的最后一部分也不同,因此类可以

例如,我有一个字符串:

$string = '<div class="ImageRight" style="width:150px">';
$string='';
我想将其转化为:

$string = '<div class="ImageRight">';
$string='';
  • 我想去掉那部分
    style=“width:150px
    带有
    preg\u replace()
    其中 尺寸150可以不同,因此宽度可以不同 500px等

  • 此外,类名的最后一部分也不同,因此类可以是ImageRight、ImageLeft、ImageTop等

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

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

    完全删除

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

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

    您可以通过以下两个步骤完成:

    $place = 'Left';
    $size = 500;
    $string = preg_replace('/(?<=class="image)\W(?=")/',$place,$string);
    $string = preg_replace('/(?<=style="width:)[0-9]+(?=")/',$size,$string);
    
    $place='Left';
    $size=500;
    
    $string=preg_replace('/(?我想这就是你想要的

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

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

    $string  = preg_replace('/<div class="Image(.*?)".*?>/i', '<div class="Image$1">', $string);
    
    $string=preg_replace('//i',''$string);
    
    学习正则表达式的一个很好的来源:类/样式标记是否总是以相同的方式显示?这是html文档的一部分,还是只有该div?可能是