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>
위 내용은 a_star 콘텐츠를 포함하여 PHP의 mht 파일 처리 방법을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











2월 14일 본 홈페이지 소식에 따르면 야후 라인은 오늘 국내 아웃소싱 업체에 불법 접속해 약 5만7000명의 라인 직원 정보가 유출됐을 가능성이 있다고 밝혔다. 사용자나 협력업체 정보가 유출됐는지 여부는 아직 확인되지 않았다. 유출되었습니다. 2023년 11월 LINE 앱에서 사용자 정보가 유출된 사건에 이어 회사의 소홀한 정보 관리가 잇따라 드러났습니다. 야후 라인 관계자에 따르면 2023년 8월부터 11월까지 한국 아웃소싱 기업 2곳이 무단 접속과 제3자 침입을 받아 직원 57,611명의 이메일 주소, 전화번호, 사진이 유출될 가능성이 있었다. 직원 정보 도용으로 인해 2차 피해가 발생했는지 여부는 아직 확인되지 않았습니다. Yahoo 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. 데이터 트래픽이 활성화되거나 Wi-Fi에 연결되어 있으면 언제든지 무료로 통화할 수 있습니다. LINE 스마트폰이기 때문에 사용자 간 무료 통화가 가능합니다. 3. 기분을 더 잘 표현할 수 있는 스티커 등.

Vue2의 이 포인팅 문제로 인해 동료가 버그로 인해 화살표 기능이 사용되어 해당 소품을 얻을 수 없게 되었습니다. 제가 그에게 소개했을 때 그는 그것을 몰랐고, 그래서 저는 일부러 프론트엔드 커뮤니케이션 그룹을 살펴보았습니다. 지금까지 적어도 70%의 프론트엔드 프로그래머들은 오늘 그것을 이해하지 못하고 있습니다. 모든 것이 불분명하다면 이 링크를 아직 배우지 않았다면 큰 소리로 말해주세요.

이 글은 Vue 소스 코드를 해석하는 데 도움이 될 것이며 이를 사용하여 Vue2의 다양한 옵션에서 속성에 액세스할 수 있는 이유를 소개하는 것이 모든 사람에게 도움이 되기를 바랍니다!

POS 코인이란? POS 코인, 즉 ProofofStake 코인은 비트코인의 작업증명(ProofofWork)과는 다른 암호화폐 합의 메커니즘입니다. POS 코인의 합의 알고리즘은 코인 보유 개수와 시간에 따라 달라집니다. 보유자는 코인을 보유하고 잠그면(보통 일정 시간이 소요됨) 해당 보상을 얻을 수 있습니다. 즉, POS 코인은 보유한 코인의 양과 락업 시간을 기준으로 보유자에게 보상을 제공합니다. POS 화폐의 장점 POW 화폐에 비해 POS 화폐는 보유자의 신뢰와 참여에 더 많은 관심을 기울이기 때문에 합의 메커니즘이 더 에너지 효율적입니다. POW 코인은 합의 과정을 완료하기 위해 많은 양의 전력이 필요한 반면, POS 코인은 보유자의 투자와 신뢰를 통해 네트워크의 보안과 안정성을 보장합니다. 이런 베이스

머리말 Java에서는 Range 메서드를 IntStream 및 LongStream 클래스 모두에서 사용할 수 있습니다. IntStream 클래스에서는 함수 매개변수 범위 내에서 IntStream의 순차적 값을 반환하는 데 도움이 됩니다. 메서드에서 startInclusive(inclusive) 및 endExclusive(exclusive)는 증분 단계 크기와 함께 사용되는 두 개의 매개 변수이며 앞서 언급한 대로 시작 값은 포함되고 끝 값은 제외됩니다. LongStream의 경우 유일한 차이점은 LongStream 값이 추가된다는 것입니다. 범위 구문(Range Syntax) Java의 범위 메소드 구문을 살펴보겠습니다. IntStream 범위

Go 언어는 여러 측면에서 독특한 디자인과 기능을 갖춘 간결하고 강력한 프로그래밍 언어입니다. 가장 인상적인 기능 중 하나는 배열, 슬라이스, 맵, 채널과 같은 데이터 구조를 반복하는 데 사용되는 range 키워드입니다. 범위의 유연성과 편리함 덕분에 복잡한 데이터 구조를 쉽게 탐색할 수 있지만 많은 사람들이 그 작동 방식에 대해 혼란스러워합니다. 이 기사에서는 범위가 어떻게 작동하는지 간단하고 이해하기 쉬운 방식으로 설명하고 특정 코드 예제를 사용하여 독자의 이해를 돕습니다. 먼저 간단한 예를 살펴보자
