PHP 處理 mht 文件
<span><?php </span><span>/** </span><span> * Created by PhpStorm. </span><span> * User: kungyu </span><span> * Date: 2015/12/3 </span><span> * Time: 15:30 </span><span> */ </span><span>class </span>mhtparse { <span>var </span><span>$file </span><span>= </span><span>''</span><span>; </span><span>var </span><span>$boundary </span><span>= </span><span>''</span><span>; </span><span>var </span><span>$filedata </span><span>= </span><span>''</span><span>; </span><span>var </span><span>$countparts </span><span>= </span><span>1</span><span>; </span><span>var </span><span>$log </span><span>= </span><span>''</span><span>; </span><span>function </span>extract() { <span>$this</span><span>-></span>read_filedata ()<span>; </span><span>$this</span><span>-></span>file_parts ()<span>; </span><span>return </span><span>1</span><span>; </span>} <span>function </span>set_file(<span>$p</span>) { <span>$this</span><span>-></span>file <span>= </span><span>$p</span><span>; </span>} <span>function </span>get_log() { <span>return </span><span>$this</span><span>-></span>log<span>; </span>} <span>function </span>file_parts() { <span>$lines </span><span>= </span>explode ( <span>"</span><span>\n</span><span>"</span>, substr ( <span>$this</span><span>-></span>filedata, <span>0</span>, <span>8192 </span>) )<span>; </span><span>foreach </span>( <span>$lines </span><span>as </span><span>$line </span>) { <span>$line </span><span>= </span>trim ( <span>$line </span>)<span>; </span><span>if </span>(strpos ( <span>$line</span>, <span>'=' </span>) <span>!== </span><span>FALSE</span>) { <span>if </span>(strpos ( <span>$line</span>, <span>'boundary'</span>, <span>0 </span>) <span>!== </span><span>FALSE</span>) { <span>$range </span><span>= </span><span>$this</span><span>-></span>getrange ( <span>$line</span>, <span>'"'</span>, <span>'"'</span>, <span>0 </span>)<span>; </span><span>$this</span><span>-></span>boundary <span>= </span><span>"--" </span><span>. </span><span>$range </span><span>[</span><span>'range'</span><span>]</span><span>; </span><span>$this</span><span>-></span>filedata <span>= </span>str_replace ( <span>$line</span>, <span>''</span>, <span>$this</span><span>-></span>filedata )<span>; </span><span>break</span><span>; </span>} } } <span>if </span>(<span>$this</span><span>-></span>boundary <span>!= </span><span>''</span>) { <span>$this</span><span>-></span>filedata <span>= </span>explode ( <span>$this</span><span>-></span>boundary, <span>$this</span><span>-></span>filedata )<span>; </span><span>unset </span>( <span>$this</span><span>-></span>filedata <span>[</span><span>0</span><span>] </span>)<span>; </span><span>$this</span><span>-></span>filedata <span>= </span>array_values ( <span>$this</span><span>-></span>filedata )<span>; </span><span>$this</span><span>-></span>countparts <span>= </span>count ( <span>$this</span><span>-></span>filedata )<span>; </span>} <span>else </span>{ <span>$tmp </span><span>= </span><span>$this</span><span>-></span>filedata<span>; </span><span>$this</span><span>-></span>filedata <span>= </span><span>array </span>( <span>$tmp </span>)<span>; </span>} } <span>function </span>get_all_part_file() { <span>return </span><span>$this</span><span>-></span>filedata<span>; </span>} <span>function </span>get_part_to_file(<span>$i</span>) { <span>$line_dat<strong>a_star</strong>t </span><span>= </span><span>0</span><span>; </span><span>$encoding </span><span>= </span><span>''</span><span>; </span><span>$part_lines </span><span>= </span>explode ( <span>"</span><span>\n</span><span>"</span>, ltrim ( <span>$this</span><span>-></span>filedata <span>[</span><span>$i</span><span>] </span>) )<span>; </span><span>foreach </span>( <span>$part_lines </span><span>as </span><span>$line_id </span>=> <span>$line </span>) { <span>$line </span><span>= </span>trim ( <span>$line </span>)<span>; </span><span>if </span>(<span>$line </span><span>== </span><span>''</span>) { <span>if </span>(trim ( <span>$part_lines </span><span>[</span><span>0</span><span>] </span>) <span>== </span><span>'--'</span>) <span>return </span><span>1</span><span>; </span><span>$line_dat<strong>a_star</strong>t </span><span>= </span><span>$line_id</span><span>; </span><span>break</span><span>; </span>} <span>if </span>(strpos ( <span>$line</span>, <span>':' </span>) <span>!== </span><span>FALSE</span>) { <span>$pos </span><span>= </span>strpos ( <span>$line</span>, <span>':' </span>)<span>; </span><span>$k </span><span>= </span>strtolower ( trim ( substr ( <span>$line</span>, <span>0</span>, <span>$pos </span>) ) )<span>; </span><span>$v </span><span>= </span>trim ( substr ( <span>$line</span>, <span>$pos </span><span>+ </span><span>1</span>, strlen ( <span>$line </span>) ) )<span>; </span><span>if </span>(<span>$k </span><span>== </span><span>'content-transfer-encoding'</span>) { <span>$encoding </span><span>= </span><span>$v</span><span>; </span>} <span>if </span>(<span>$k </span><span>== </span><span>'content-location'</span>) { <span>$location </span><span>= </span><span>$v</span><span>; </span>} <span>if </span>(<span>$k </span><span>== </span><span>'content-type'</span>) { <span>$contenttype </span><span>= </span><span>$v</span><span>; </span>} } } <span>foreach </span>( <span>$part_lines </span><span>as </span><span>$line_id </span>=> <span>$line </span>) { <span>if </span>(<span>$line_id </span><span><= </span><span>$line_dat<strong>a_star</strong>t</span>) <span>$part_lines </span><span>[</span><span>$line_id</span><span>] = </span><span>''</span><span>; </span>} <span>$part_lines </span><span>= </span>implode ( <span>''</span>, <span>$part_lines </span>)<span>; </span><span>if </span>(<span>$encoding </span><span>== </span><span>'base64'</span>) <span>$part_lines </span><span>= </span>base64_decode ( <span>$part_lines </span>)<span>; </span><span>elseif </span>(<span>$encoding </span><span>== </span><span>'quoted-printable'</span>) <span>$part_lines </span><span>= </span>imap_qprint ( <span>$part_lines </span>)<span>; </span><span>return </span><span>$part_lines</span><span>; </span>} <span>function </span>read_filedata() { <span>$handle </span><span>= </span>fopen ( <span>$this</span><span>-></span>file, <span>'r' </span>)<span>; </span><span>$this</span><span>-></span>filedata <span>= </span>fread ( <span>$handle</span>, filesize ( <span>$this</span><span>-></span>file ) )<span>; </span>fclose ( <span>$handle </span>)<span>; </span>} <span>function </span>getrange(<span>&</span><span>$subject</span>, <span>$Beginmark_str </span><span>= </span><span>'{'</span>, <span>$Endmark_str </span><span>= </span><span>'}'</span>, <span>$Start_pos </span><span>= </span><span>0</span>) { <span>/* </span><span> * $str="sssss { x { xx } {xx{xx } x} x} sssss"; $range=string::getRange($str,'{','}',0); echo $range['range']; //tulem: " x { xx } {xx{xx } x} x" echo $range['behin']; //tulem: 6 echo $range['end']; //tulem: 30 (' ') -- l5pum?¤rgist j?¤rgnev out: array('range'=>$Range,'begin'=>$Begin_firstOccurence_pos,'end'=>$End_sequel_pos) | false v1.1 2004-2006,Uku-Kaarel J5esaar,ukjoesaar@hot.ee,http://www.hot.ee/ukjoesaar,+3725110693 </span><span> */ </span><span>if </span>(<span>empty </span>( <span>$Beginmark_str </span>)) <span>$Beginmark_str </span><span>= </span><span>'{'</span><span>; </span><span>$Beginmark_str_len </span><span>= </span>strlen ( <span>$Beginmark_str </span>)<span>; </span><span>if </span>(<span>empty </span>( <span>$Endmark_str </span>)) <span>$Endmark_str </span><span>= </span><span>'}'</span><span>; </span><span>$Endmark_str_len </span><span>= </span>strlen ( <span>$Endmark_str </span>)<span>; </span><span>/* $Start_pos_cache = 0; */ </span><span>do </span>{ <span>/* !algus */ </span><span>if </span>(<span>! </span>is_int ( <span>$Begin_firstOccurence_pos </span>)) <span>$Start_pos_cache </span><span>= </span><span>$Start_pos</span><span>; </span><span>/* ?algus-test */ </span><span>$Start_pos_cache </span><span>= @</span>strpos ( <span>$subject</span>, <span>$Beginmark_str</span>, <span>$Start_pos_cache </span>)<span>; </span><span>/* this is possible start for range */ </span><span>if </span>(is_int ( <span>$Start_pos_cache </span>)) { <span>/* skip */ </span><span>$Start_pos_cache </span><span>= </span>(<span>$Start_pos_cache </span><span>+ </span><span>$Beginmark_str_len</span>)<span>; </span><span>/* test possible range start pos */ </span><span>if </span>(is_int ( <span>$Begin_firstOccurence_pos </span>)) { <span>if </span>(<span>$Start_pos_cache </span><span>< </span><span>$range_end_pos</span>) <span>$rangeClean </span><span>= </span><span>0</span><span>; </span><span>elseif </span>(<span>$Start_pos_cache </span><span>> </span><span>$range_end_pos</span>) <span>$rangeClean </span><span>= </span><span>1</span><span>; </span>} <span>/* here it is */ </span><span>if </span>(<span>! </span>is_int ( <span>$Begin_firstOccurence_pos </span>)) <span>$Begin_firstOccurence_pos </span><span>= </span><span>$Start_pos_cache</span><span>; </span>} <span>/* VIGA NR 0 ALGUST EI OLE */ </span><span>if </span>(<span>! </span>is_int ( <span>$Start_pos_cache </span>)) { <span>/* !algus */ </span><span> /* VIGA NR 1 ALGUSMARKI EI LEITUD : VIIMANE VOIMALIK ALGUS */ </span><span>if </span>(is_int ( <span>$Begin_firstOccurence_pos </span>) <span>and </span>(<span>$Start_pos_cache </span><span>< </span><span>$range_end_pos</span>)) <span>$rangeClean </span><span>= </span><span>1</span><span>; </span><span>else </span><span> return false</span><span>; </span>} <span>if </span>(is_int ( <span>$Begin_firstOccurence_pos </span>) <span>and </span>(<span>$rangeClean </span><span>!= </span><span>1</span>)) { <span>if </span>(<span>! </span>is_int ( <span>$End_pos_cache </span>)) <span>$End_sequel_pos </span><span>= </span><span>$Begin_firstOccurence_pos</span><span>; </span><span>$End_pos_cache </span><span>= </span>strpos ( <span>$subject</span>, <span>$Endmark_str</span>, <span>$End_sequel_pos </span>)<span>; </span><span>/* ok */ </span><span>if </span>(is_int ( <span>$End_pos_cache </span>) <span>and </span>(<span>$rangeClean </span><span>!= </span><span>1</span>)) { <span>$range_current_lenght </span><span>= </span>(<span>$End_pos_cache </span><span>- </span><span>$Begin_firstOccurence_pos</span>)<span>; </span><span>$End_sequel_pos </span><span>= </span>(<span>$End_pos_cache </span><span>+ </span><span>$Endmark_str_len</span>)<span>; </span><span>$range_end_pos </span><span>= </span><span>$End_pos_cache</span><span>; </span>} <span>/* VIGA NR 2 LOPPU EI LEITUD */ </span><span>if </span>(<span>! </span>is_int ( <span>$End_pos_cache </span>)) <span>if </span>(<span>$End_pos_cache </span><span>== </span><span>false</span>) <span>return false</span><span>; </span>} } <span>while </span>( <span>$rangeClean </span><span>< </span><span>1 </span>)<span>; </span><span>if </span>(is_int ( <span>$Begin_firstOccurence_pos </span>) <span>and </span>is_int ( <span>$range_current_lenght </span>)) <span>$Range </span><span>= </span>substr ( <span>$subject</span>, <span>$Begin_firstOccurence_pos</span>, <span>$range_current_lenght </span>)<span>; </span><span>else </span><span> return false</span><span>; </span><span>return array </span>( <span>'range' </span>=> <span>$Range</span>, <span>'begin' </span>=> <span>$Begin_firstOccurence_pos</span>, <span>'end' </span>=> <span>$End_sequel_pos </span>)<span>; </span>} <span>// end getrange() </span>} <span>// class </span><span>/*$filename = './test.mht'; </span><span>if (file_exists ( $filename )) { </span><span> if (is_dir ( $filename )) return false; </span><span> $filename = strtolower ( $filename ); </span><span> if (strpos ( $filename, '.mht', 1 ) == FALSE) return false; </span><span> $o_mhtml = new mhtparse (); </span><span> $o_mhtml->set_file ( $filename ); </span><span> $o_mhtml->extract (); </span><span> $res = $o_mhtml->get_part_to_file(0); </span><span> var_dump($res); </span><span>}*/</span></span>
以上就介紹了PHP 處理 mht 文件,包括了a_star方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本站2月14日消息,雅虎LINE公司今日宣布,韓國外包公司遭到非法訪問,約5.7萬名LINE員工資訊可能被洩露,目前尚未確認是否有用戶或業務合作夥伴的資訊洩露。隨著2023年11月LINE應用程式洩漏用戶資訊事件後,該公司資訊管理不嚴的情況接二連三曝光。據雅虎LINE官方稱,2023年8月至11月期間,外包的兩家韓國公司收到未經授權的訪問和第三方入侵,57,611名員工的電子郵件地址、電話號碼和照片有可能被洩露。目前尚未確認是否因使用員工資訊而造成二次損害。雅虎LINE於2023年11月宣布其服務

這篇文章將為大家詳細講解有關PHP返回數組所有值,組成一個數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。使用array_values()函數array_values()函數傳回陣列中所有值的陣列。它不會保留原始數組的鍵。 $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values將是["bar","qux"]使用迴圈可以使用循環手動獲取數組的所有值並將其新增至一個新

line是韓國網路集團NHN的日本子公司NHN Japan推出的即時通訊軟體,主要功能包括:1、在開通數據流量或連接wifi條件下,可隨時免費通話;2、只要是LINE的智慧型手機用戶之間,即可進行免費通話;3、更能表達心情的貼圖等等。

同事因為this指向的問題卡住的bug,vue2的this指向問題,使用了箭頭函數,導致拿不到對應的props。當我跟他介紹的時候他竟然不知道,隨後也刻意的看了一下前端交流群,至今最起碼還有70%以上的前端程式設計師搞不明白,今天給大家分享一下this指向,如果啥都沒學會,請給我一個大嘴巴子。

這篇文章帶大家解讀vue原始碼,來介紹一下Vue2中為什麼可以使用 this 存取各種選項中的屬性,希望對大家有幫助!

什麼是POS幣? POS幣,即ProofofStake幣,是一種加密貨幣共識機制,與比特幣的工作量證明(ProofofWork)不同。 POS幣的共識演算法依賴持有的幣的數量和時間。持有者可以透過持有幣並將其鎖倉(通常需要一定時間)來獲得相應的回報。簡而言之,POS幣獎勵持有者根據其持有的幣量和鎖倉時間。 POS幣的優勢POS幣與POW幣相比,更注重持有者的信任與參與程度,因此其共識機制更為能源高效。 POW幣需要大量的電力來完成共識過程,而POS幣則透過持有者的投入和信任來確保網路的安全和穩定。這種基

前言在Java中,Range方法在IntStream和LongStream類別中都可用。在IntStream類別中,它有助於傳回函數參數範圍內IntStream的順序值。在這個方法中,startInclusive(inclusive)和endExclusive(exclusive)是與增量步長一起使用的兩個參數,如前所述,將包括起始值,並排除結束值。在LongStream的情況下,唯一的區別是增加了LongStream值。 Range語法讓我們來看看Java中range方法的語法。 IntStream範圍的

Go語言是一種簡潔而強大的程式語言,在許多方面都具有獨特的設計和特點。其中一個令人印象深刻的特性就是range關鍵字,它被用來迭代數組、切片、映射和通道等資料結構。 range的靈活性和便利性使得遍歷複雜資料結構變得簡單,但其運作方式卻有許多人感到困惑。本文將深入淺出地解釋range的工作原理,並透過具體程式碼範例來幫助讀者更好地理解。首先,讓我們來看一個簡單的例
