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>$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>
以上就介绍了PHP 处理 mht 文件,包括了a_star方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Selon des informations publiées sur ce site Web le 14 février, Yahoo LINE a annoncé aujourd'hui qu'une société d'externalisation coréenne avait été consultée illégalement et que les informations d'environ 57 000 employés de LINE pourraient avoir été divulguées. Il n'a pas encore été confirmé si des informations sur des utilisateurs ou des partenaires commerciaux ont été divulguées. été divulgué. Suite à la fuite d'informations sur les utilisateurs par l'application LINE en novembre 2023, la gestion laxiste des informations de l'entreprise a été révélée les unes après les autres. Selon les responsables de Yahoo LINE, entre août et novembre 2023, deux sociétés coréennes d'externalisation ont fait l'objet d'accès non autorisés et d'intrusions de tiers, et les adresses e-mail, numéros de téléphone et photos de 57 611 employés ont potentiellement été divulgués. Il n'a pas encore été confirmé si des dommages secondaires ont été causés par l'utilisation des informations sur les employés. Yahoo LINE annonce son service en novembre 2023

Cet article expliquera en détail comment PHP renvoie toutes les valeurs d'un tableau pour former un tableau. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. . Utilisation de la fonction array_values() La fonction array_values() renvoie un tableau de toutes les valeurs d'un tableau. Il ne conserve pas les clés du tableau d'origine. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values sera ["bar","qux"]Utilisation une boucle peut utiliser une boucle pour obtenir manuellement toutes les valeurs du tableau et les ajouter à un nouveau

Line est un logiciel de messagerie instantanée lancé par NHN Japan, la filiale japonaise du groupe Internet coréen NHN. Ses principales fonctions sont les suivantes : 1. Vous pouvez passer des appels gratuits à tout moment lorsque le trafic de données est activé ou connecté au wifi. comme il s'agit d'un smartphone LINE, les utilisateurs peuvent passer des appels gratuits entre utilisateurs ; 3. Des autocollants qui peuvent mieux exprimer leurs humeurs, etc.

Un collègue est resté bloqué à cause d'un bug signalé par ce problème de pointage de Vue2 qui a provoqué l'utilisation d'une fonction de flèche, entraînant l'impossibilité d'obtenir les accessoires correspondants. Il ne le savait pas quand je le lui ai présenté, puis j'ai délibérément regardé le groupe de communication front-end. Jusqu'à présent, au moins 70 % des programmeurs front-end ne le comprennent toujours pas. Aujourd'hui, je vais partager avec. vous ce lien. Si tout n'est pas clair Si vous ne l'avez pas encore appris, s'il vous plaît, faites-moi une grande gueule.

Cet article vous aidera à interpréter le code source de Vue et à vous expliquer pourquoi vous pouvez l'utiliser pour accéder aux propriétés de diverses options de Vue2. J'espère qu'il sera utile à tout le monde !

Qu'est-ce que la pièce de point de vente ? La pièce POS, c'est-à-dire la pièce ProofofStake, est un mécanisme de consensus de crypto-monnaie, différent de la preuve de travail de Bitcoin (ProofofWork). L’algorithme de consensus des pièces POS dépend du nombre et de l’heure des pièces détenues. Les détenteurs peuvent gagner les récompenses correspondantes en détenant des pièces et en les verrouillant (ce qui prend généralement un certain temps). En bref, les pièces POS récompensent les détenteurs en fonction de la quantité de pièces qu'ils détiennent et du temps de blocage. Avantages de la monnaie POS Par rapport à la monnaie POW, la monnaie POS accorde plus d'attention à la confiance et à la participation des détenteurs, de sorte que son mécanisme de consensus est plus économe en énergie. Les pièces POW nécessitent une grande quantité d'électricité pour mener à bien le processus de consensus, tandis que les pièces POS garantissent la sécurité et la stabilité du réseau grâce à l'investissement et à la confiance des détenteurs. Ce genre de base

Préface En Java, la méthode Range est disponible dans les classes IntStream et LongStream. Dans la classe IntStream, il est utile de renvoyer la valeur séquentielle de IntStream dans la portée du paramètre de fonction. Dans la méthode, startInclusive(inclusive) et endExclusive(exclusive) sont les deux paramètres utilisés avec la taille du pas d'incrément, comme mentionné précédemment, la valeur de début sera incluse et la valeur de fin sera exclue. Dans le cas de LongStream, la seule différence est l'ajout de la valeur LongStream. Syntaxe de plage Voyons la syntaxe de la méthode range en Java. Plage IntStream

Le langage Go est un langage de programmation concis et puissant avec une conception et des fonctionnalités uniques à bien des égards. L'une des fonctionnalités les plus impressionnantes est le mot-clé range, qui est utilisé pour parcourir des structures de données telles que des tableaux, des tranches, des cartes et des canaux. La flexibilité et la commodité de range facilitent la traversée de structures de données complexes, mais de nombreuses personnes ne comprennent pas comment cela fonctionne. Cet article expliquera le fonctionnement de range de manière simple et approfondie, et utilisera des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. Tout d'abord, regardons un exemple simple
