The following is an example of converting a php parsing mht file into html. I think this is quite good. now I will share it with you and give you a reference. Let's take a look at the following small series to bring you an example of converting a php parsing mht file into html. I think this is quite good. now I will share it with you and give you a reference. Let's take a look at it with Xiaobian.
Php parses the mht file and opens it in the editor to see base64 encoding. Therefore, mht can be converted to html.
Set_file ($ filename); $ o_mhtml-> extract (); return $ o_mhtml-> get_part_to_file (0);} return null;} function mhtmlParseAll ($ filename) {if (file_exists ($ filename) {if (is_dir ($ filename) return false; $ filename = strtolower ($ filename); if (strpos ($ filename ,'. mht ', 1) = FALSE) return false; $ o_mhtml = new mhtml (); $ o_mhtml-> set_file ($ filename); $ o_mhtml-> extract (); return $ o_mhtml-> get_all_p Art_file ();} return null;} */class mhtparse {var $ file = ''; var $ boundary =''; var $ filedata = ''; var $ countparts = 1; var $ log = ''; function extract () {$ this-> read_filedata (); $ this-> file_parts (); return 1 ;} function set_file ($ p) {$ this-> file = $ p;} function get_log () {return $ this-> log;} function file_parts () {$ lines = explode ("\ n", substr ($ this-> filedata, 0, 8192); foreach ($ lines as $ line ){ $ Line = trim ($ line); if (strpos ($ line, '= ')! = FALSE) {if (strpos ($ line, 'boundary ', 0 )! = FALSE) {$ range = $ this-> getrange ($ line, '"', '"', 0); $ this-> boundary = "--". $ range ['range']; $ this-> filedata = str_replace ($ line, '', $ this-> filedata); break ;}}} if ($ this-> boundary! = '') {$ This-> filedata = explode ($ this-> boundary, $ this-> filedata); unset ($ this-> filedata [0]); $ this-> filedata = array_values ($ this-> filedata); $ this-> countparts = count ($ this-> filedata );} else {$ tmp = $ this-> filedata; $ this-> filedata = array ($ tmp) ;}} function get_all_part_file () {return $ this-> filedata ;} function get_part_to_file ($ I) {$ line_data_start = 0; $ encoding = ''; $ part_lines = expl Ode ("\ n", ltrim ($ this-> filedata [$ I]); foreach ($ part_lines as $ line_id => $ line) {$ line = trim ($ line); if ($ line = '') {if (trim ($ part_lines [0]) = '--') return 1; $ line_data_start = $ line_id; break;} if (strpos ($ line ,':')! = FALSE) {$ pos = strpos ($ line, ':'); $ k = strtolower (trim (substr ($ line, 0, $ pos ))); $ v = trim (substr ($ line, $ pos + 1, strlen ($ line); if ($ k = 'content-transfer-encoding ') {$ encoding = $ v;} if ($ k = 'content-location') {$ location = $ v;} if ($ k = 'content-type ') {$ contenttype = $ v ;}} foreach ($ part_lines as $ line_id =>$ line) {if ($ line_id <= $ line_data_start) $ part_lines [$ lin E_id] = '';} $ part_lines = implode ('', $ part_lines); if ($ encoding = 'base64') $ part_lines = base64_decode ($ part_lines ); elseif ($ encoding = 'quoted-printable') $ part_lines = imap_qprint ($ part_lines); return $ part_lines;} function read_filedata () {$ handle = fopen ($ this-> file, 'r'); $ this-> filedata = fread ($ handle, filesize ($ this-> file )); fclose ($ handle);} function getrange (& $ subject, $ Beginmark_str = '{', $ Endmark_str = '}', $ Start_pos = 0) {/** $ str = "sssss {x {xx} x} sssss"; $ range = string: getRange ($ str, '{', '}', 0); echo $ range ['range']; // tulem: "x {xx} x" echo $ range ['behin']; // tulem: 6 echo $ range ['end']; // tulem: 30 ('') -- l5pum merge into rgist j encode into rgnev out: array ('range' => $ range, 'begin' => $ Begin_firstOccurence_pos, 'End' => $ End_sequel_pos) | false v1. 1 2004-2006, Uku-Kaarel J5esaar, ukjoesaar@hot.ee, #, + 3725110693 */if (empty ($ Beginmark_str) $ Beginmark_str = '{'; $ response = strlen ($ Beginmark_str); if (empty ($ Endmark_str) $ Endmark_str = '}'; $ Endmark_str_len = strlen ($ Endmark_str);/* $ Start_pos_cache = 0; */do {/*! Algus */if (! Is_int ($ Begin_firstOccurence_pos) $ Start_pos_cache = $ Start_pos ;/*? Algus-test */$ Start_pos_cache = @ strpos ($ subject, $ Beginmark_str, $ Start_pos_cache);/* this is possible start for range */if (is_int ($ Start_pos_cache )) {/* skip */$ Start_pos_cache = ($ Start_pos_cache + $ Beginmark_str_len);/* test possible range start pos */if (is_int ($ Begin_firstOccurence_pos )) {if ($ Start_pos_cache <$ range_end_pos) $ rangeClean = 0; elseif ($ Start_pos_cache> $ range_end_pos) $ RangeClean = 1;}/* here it is */if (! Is_int ($ Begin_firstOccurence_pos) $ Begin_firstOccurence_pos = $ Start_pos_cache;}/* viga nr 0 algust ei ole */if (! Is_int ($ Start_pos_cache )){/*! Algus * // * viga nr 1 algusmarki ei leitud: viimane voimalik algus */if (is_int ($ timeout) and ($ Start_pos_cache <$ range_end_pos) $ rangeClean = 1; elsereturn false;} if (is_int ($ Begin_firstOccurence_pos) and ($ rangeClean! = 1) {if (! Is_int ($ End_pos_cache) $ End_sequel_pos = $ region; $ End_pos_cache = strpos ($ subject, $ Endmark_str, $ End_sequel_pos);/* OK */if (is_int ($ End_pos_cache) and ($ rangeClean! = 1) {$ range_current_lenght = ($ End_pos_cache-$ scheme); $ End_sequel_pos = ($ End_pos_cache + $ Endmark_str_len); $ range_end_pos = $ End_pos_cache ;} /* viga nr 2 loppu ei leitud */if (! Is_int ($ End_pos_cache) if ($ End_pos_cache = false) return false ;}while ($ rangeClean <1); if (is_int ($ Begin_firstOccurence_pos) and is_int ($ range_current_lenght) $ Range = substr ($ subject, $ Begin_firstOccurence_pos, $ range_current_lenght); elsereturn false; return array ('range' => $ range, 'BEGIN' => $ Begin_firstOccurence_pos, 'end' => $ End_sequel_pos);} // end getrange ()} // class?>
The above is the detailed description of the example for converting the mht file to html in php parsing. For more information, see other related articles in the first PHP community!