Php parses mht files and converts them to html instances

Source: Internet
Author: User
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!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.