<?php
$doc = new DOMDocument( ) ;
$str [ ] = '<style type="text/css"></style>' ;
$str [ ] = '<style type=text/css></style>' ;
$str [ ] = '<style TYPE="TEXT/CSS"></style>' ;
$str [ ] = '<style TYPE=TEXT/CSS></style>' ;
foreach ( $str as $myHtml ) {
echo "before " , $myHtml , PHP_EOL;
$doc -> loadHTML ( $myHtml , LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD) ;
removeAttr( "style" , "type" , $doc ) ;
echo "after: " , $doc -> saveHtml ( ) , PHP_EOL;
}
function removeAttr( $tag , $attr , $doc ) {
$nodeList = $doc -> getElementsByTagName ( $tag ) ;
for ( $nodeIdx = $nodeList -> length ; -- $nodeIdx >= 0 ; ) {
$node = $nodeList -> item ( $nodeIdx ) ;
$node -> removeAttribute ( $attr ) ;
}
}
PD9waHAKCiRkb2MgPSBuZXcgRE9NRG9jdW1lbnQoKTsKCiRzdHJbXSA9ICc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+JzsKJHN0cltdID0gJzxzdHlsZSB0eXBlPXRleHQvY3NzPjwvc3R5bGU+JzsKJHN0cltdID0gJzxzdHlsZSBUWVBFPSJURVhUL0NTUyI+PC9zdHlsZT4nOwokc3RyW10gPSAnPHN0eWxlIFRZUEU9VEVYVC9DU1M+PC9zdHlsZT4nOwoKZm9yZWFjaCAoJHN0ciBhcyAkbXlIdG1sKSB7CgplY2hvICJiZWZvcmUgIiwgJG15SHRtbCwgUEhQX0VPTDsKCiRkb2MtPmxvYWRIVE1MKCRteUh0bWwsIExJQlhNTF9IVE1MX05PSU1QTElFRCB8IExJQlhNTF9IVE1MX05PREVGRFREKTsKCnJlbW92ZUF0dHIoInN0eWxlIiwgInR5cGUiLCAkZG9jKTsKCmVjaG8gImFmdGVyOiAiLCAkZG9jLT5zYXZlSHRtbCgpLCBQSFBfRU9MOwoKfQoKZnVuY3Rpb24gcmVtb3ZlQXR0cigkdGFnLCAkYXR0ciwgJGRvYykgewogICAgJG5vZGVMaXN0ID0gJGRvYy0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJHRhZyk7CiAgICBmb3IgKCRub2RlSWR4ID0gJG5vZGVMaXN0LT5sZW5ndGg7IC0tJG5vZGVJZHggPj0gMDsgKSB7CiAgICAgICAgICRub2RlID0gJG5vZGVMaXN0LT5pdGVtKCRub2RlSWR4KTsKICAgICAgICAgJG5vZGUtPnJlbW92ZUF0dHJpYnV0ZSgkYXR0cik7CiAgICB9Cn0=