11<?php
2- $dom = new DomDocument ();
3- $dom -> loadHtml ( mb_convert_encoding ($html_field , ' HTML-ENTITIES' , " UTF-8" ), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
4-
5- $images = $dom -> getElementsByTagName (' img' );
6-
7- // foreach <img> in the email html
8- $i = 0 ;
9- foreach ($images as $img ){
10- $src = $img -> getAttribute (' src' );
11-
12- // if the img source is 'data-url'
13- if (preg_match ('/ data:image\/ png;base64,/' , $src )){
14-
15- $src = str_replace (' data:image/png;base64,' , ' ' , $src );
16- $img -> removeAttribute (' src' );
17- $img -> setAttribute (' src' , $message -> embedData (base64_decode ($src ), " embed" . $i . " .png" ));
18-
19- $i ++ ;
20- }
21- }
22-
23- echo $dom -> saveHTML ();
2+ $dom = new \DomDocument ();
3+
4+ if ($dom -> loadHtml ( mb_convert_encoding (' <div>' . $html_field . ' </div>' , ' HTML-ENTITIES' , " UTF-8" ), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD )){
5+
6+ $container = $dom -> getElementsByTagName (' div' )-> item (0 );
7+ $container = $container -> parentNode -> removeChild ($container );
8+ while ($dom -> firstChild ) {
9+ $dom -> removeChild ($dom -> firstChild );
10+ }
11+
12+ while ($container -> firstChild ) {
13+ $dom -> appendChild ($container -> firstChild );
14+ }
15+
16+ $images = $dom -> getElementsByTagName (' img' );
17+
18+ // foreach <img> in the email html
19+ $i = 0 ;
20+ foreach ($images as $img ){
21+ $src = $img -> getAttribute (' src' );
22+
23+ // if the img source is 'data-url'
24+ if (preg_match ('/ data:image\/ png;base64,/' , $src )){
25+
26+ $src = str_replace (' data:image/png;base64,' , ' ' , $src );
27+ $img -> removeAttribute (' src' );
28+ $img -> setAttribute (' src' , $message -> embedData (base64_decode ($src ), " embed" . $i . " .png" ));
29+
30+ $i ++ ;
31+ }
32+ }
33+
34+ echo $dom -> saveHTML ();
35+
36+ }else {
37+ \Log:: warning (' HMTL could not be processed for ' . $field . ' field in ticket #' . $ticket -> id );
38+ echo $html_field ;
39+ }
2440? >
0 commit comments