search

<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>$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>$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>$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>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></span></span></span></span>

The above introduces PHP's processing of mht files, including a_star content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
外包背锅,雅虎 LINE 泄露 5.7 万名员工信息外包背锅,雅虎 LINE 泄露 5.7 万名员工信息Feb 15, 2024 am 11:30 AM

本站2月14日消息,雅虎LINE公司今日宣布,韩国外包公司遭到非法访问,约5.7万名LINE员工信息可能被泄露,目前尚未确认是否有用户或业务合作伙伴的信息泄露。随着2023年11月LINE应用泄露用户信息事件后,该公司信息管理不严的情况接二连三被曝光。据雅虎LINE官方称,2023年8月至11月期间,外包的两家韩国公司收到未经授权的访问和第三方入侵,57,611名员工的电子邮件地址、电话号码和照片有可能被泄露。目前尚未确认是否因使用员工信息而造成二次损害。雅虎LINE于2023年11月宣布其服务

PHP返回数组所有值,组成一个数组PHP返回数组所有值,组成一个数组Mar 21, 2024 am 09:06 AM

这篇文章将为大家详细讲解有关PHP返回数组所有值,组成一个数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用array_values()函数array_values()函数返回一个数组中所有值的数组。它不会保留原始数组的键。$array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values将是["bar","qux"]使用循环可以使用循环手动获取数组的所有值并将其添加到一个新

line是什么软件line是什么软件Dec 24, 2020 pm 04:17 PM

line是韩国互联网集团NHN的日本子公司NHN Japan推出的一款即时通讯软件,其主要功能包括:1、在开通数据流量或连接wifi条件下,可随时免费通话;2、只要是LINE的智能手机用户之间,即可进行免费通话;3、更能表达心情的贴图等等。

POS是什么币种,POS币值得投资吗?POS是什么币种,POS币值得投资吗?Feb 21, 2024 pm 03:40 PM

什么是POS币?POS币,即ProofofStake币,是一种加密货币共识机制,与比特币的工作量证明(ProofofWork)不同。POS币的共识算法依赖于持有的币的数量和时间。持有者可以通过持有币并将其锁仓(通常需要一定时间)来获得相应的回报。简而言之,POS币奖励持有者根据其持有的币量和锁仓时间。POS币的优势POS币与POW币相比,更注重持有者的信任和参与程度,因此其共识机制更为能源高效。POW币需要大量的电力来完成共识过程,而POS币则通过持有者的投入和信任来确保网络的安全和稳定。这种基

Java中Range函数怎么使用Java中Range函数怎么使用Apr 19, 2023 pm 11:49 PM

前言在Java中,Range方法在IntStream和LongStream类中都可用。在IntStream类中,它有助于返回函数参数范围内IntStream的顺序值。在该方法中,startInclusive(inclusive)和endExclusive(exclusive)是与增量步长一起使用的两个参数,如前所述,将包括起始值,并排除结束值。在LongStream的情况下,唯一的区别是添加了LongStream值。Range语法让我们看看Java中range方法的语法。IntStream范围的

深入浅出:透彻理解Go语言range的工作原理深入浅出:透彻理解Go语言range的工作原理Mar 12, 2024 pm 02:18 PM

Go语言是一种简洁而强大的编程语言,在许多方面都具有独特的设计和特点。其中一个让人印象深刻的特性就是range关键字,它被用于迭代数组、切片、映射和通道等数据结构。range的灵活性和便捷性使得遍历复杂数据结构变得简单,但其工作原理却有许多人感到困惑。本文将深入浅出地解释range的工作原理,并通过具体代码示例来帮助读者更好地理解。首先,让我们看一个简单的例

Enormous Cadillac Escalade IQ offers 460 miles of range at up to $170,000 priceEnormous Cadillac Escalade IQ offers 460 miles of range at up to $170,000 priceSep 30, 2024 am 06:15 AM

GM's electric take on the legendary Escalade just got its configurator up, and the price ranges from$130,000 to about $170,000 after incentives. This is more than nearly any other luxury electric vehicle, pickup, or SUV out there, including Tesla's C

一篇搞懂this指向,赶超70%的前端人一篇搞懂this指向,赶超70%的前端人Sep 06, 2022 pm 05:03 PM

同事因为this指向的问题卡住的bug,vue2的this指向问题,使用了箭头函数,导致拿不到对应的props。当我给他介绍的时候他竟然不知道,随后也刻意的看了一下前端交流群,至今最起码还有70%以上的前端程序员搞不明白,今天给大家分享一下this指向,如果啥都没学会,请给我一个大嘴巴子。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft