목차
작성 작업이 완료되었습니다
Motie 중국어 홈페이지에서 보고 싶은 소설의 ID번호를 입력하시면 소설을 다운로드 받으실 수 있습니다
백엔드 개발 PHP 튜토리얼 컬과 정규 표현식을 사용하여 웹 데이터 크롤링

컬과 정규 표현식을 사용하여 웹 데이터 크롤링

Jul 25, 2016 am 08:48 AM

Motie Chinese 웹사이트의 비VIP 챕터에 대해 컬과 정규식을 사용하여 만든 소설 그래버입니다. 소설을 다운로드하려면 소설 ID를 입력하는 것을 지원합니다.
종속성: 컬
Curl, 정규 표현식, Ajax 및 기타 기술이 사용되어 초보자에게 적합합니다.로컬에서 테스트할 때는 인터넷에 연결되어 있는지 확인하고 PHP가 컬 모드를 켜는지 확인해야 합니다.
  1. session_start();
  2. //자동으로 크롤링되는 기사를 활성화하려면 클래스로 캡슐화하세요
  3. #header("Refresh:30;http : //www.test.com:8080");
  4. class SpiderTools{
  5. //////////////////////////// /////////////////////////////////////////////// ///// ///////////////////////////
  6. /*들어오는 기사 ID는 기사 제목을 구문 분석합니다*/
  7. ///// /////////////////////////////////////////// ///////// //////////////////////////////////////// //////////// /
  8. 공용 함수 getBookNameById($aid){
  9. //curl 초기화
  10. $ch= cur_init();
  11. //url
  12. $url='http://www.motie.com/book/'.$aid;
  13. if(is_numeric($aid)){
  14. //정규식 일치
  15. $ru="/< ;h1sclass="p-title">s *(.*)s*s*/";
  16. }
  17. else{
  18. //< title>Zombie Outbreak: The Family's Way to Survive_Chapter One: Zombie Outbreak Update for My Friend~_Sharp Iron
  19. $ru="/ (.*)</title> ;/";<li> }<li> //URL을 포함한 옵션 설정<li> 컬_setopt($ch, CURLOPT_URL, $url);<li> 컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//자동 출력 없음 Content<li> cur_setopt($ch, CURLOPT_HEADER, 0); //헤더 정보를 반환하지 않습니다.<li> cur_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 0); //curl 실행<li> $output = curl_exec($ ch);<li> //오류 메시지<li> if(curl_exec($ch) === false){<li> die(curl_error($ch));<li> } <li> // 오류가 발생했는지 확인<li> if(curl_errno($ch)){<li> echo '컬 오류: ' .curl_error($ch);<li> }<li> //해제 컬 핸들<li> 컬_close($ch) ;<li> $arr=array();<li> preg_match_all($ru,$output,$arr);<li> return $arr[1][0];<li> }<li> //// /////////////////////////////////////// ///////////// //////////////////////////////////// //////////////// // <li> /*기사 내용을 파싱하기 위해 기사 ID를 입력하세요*/<li> ///////////// /////////////////// ////////////////////////////// ///////////////////// /////////////////////////<li> public function getBookContextById($aid){<li> //기사 구문 분석 시작<li> $ids= array();<li> $ids=explode("_",$aid);<li> $titleId= 트림($ids[0]);<li> $aticleId=trim($ids[1]) <li> $ch= 컬_init();<li> $ru="/<div class="page- content">[sS]*<pre ondragstart="return false" oncopy="return false;" oncut="return false;" oncontextmenu="return false" class="note" id="html_content_d*"> [sS]*(.*)<img src="/ajax/chapter/$titleId/$aticleId " class="hidden" /></pre>/ui"; </li> <li> $url='http ://www.motie.com/book/'.$aid;</li> <li> //정규식 일치</li> <li> <li> //URL을 포함한 옵션 설정</li> <li> 컬_setopt($ch, CURLOPT_URL, $url) ; //curl 실행</li> <li> $output =curl_exec($ch);</li> <li> //오류 메시지</li> <li> if(curl_exec($ch) === false){</li> <li> die (curl_error($ch));</li> <li> }</li> <li> // 오류 발생 여부 확인</li> <li> if(curl_errno($ch)){</li> <li> echo '컬 오류: ' . </li> <li> }</li> <li> $arr=array();</li> <li> $arr2=array() </li> <li> preg_match_all($ru,$output,$arr);</li> <li>curl_close($ch);</li> <li> #var_dump($arr);</li> <li> $s=$arr[0][0];</li> <li> $s=substr($s,180);</li> <li> $arr2=explode("<img" ,$s);<li> return Trim($arr2[0]);<li> }<li><li> /////////////////////// ///////////////////////////////////////////////// //////////////////////////// ////////// <li> /*정적 메소드 @생성 소설 파일을 직접 호출할 수 있습니다*/<li> ///////////////////// ////////////////// ///////////////////////////////////////////////// //////////////////////<li> 공개 정적 함수 createBookById($id){<li> <li> if(!is_numeric($id)){ <li><li> echo "<br/>INIT BEGIN START WRITE!";</li> <li> $st=new self();</li> <li> $cons =$st->getBookContextById($id);</li> <li> $title=$st->getBookNameById($id);</li> <li> $cons=trim($cons);</li> <li> $t=explode(" ",$title);</li> <li> //디렉토리 구성 </li> <li> $dir=array();</li> <li> $dir=explode("_",$t[0]);</li> <li> $wzdir=$dir [0] //책 이름을 디렉터리 이름으로</li> <li> $wzchapter=$dir[1]; //</li> <li> //디렉토리 생성</li> <li> $wzdir2=iconv("UTF-8", " GBK", $wzdir);//디렉터리 인코딩에 유의하세요. $wzdir 문자열에 대한 참조는 파일 이름을 구성하기 위해 여기에 유지됩니다. 2차 인코딩을 방지하기 위해 여기에서 사용할 수 없습니다.</li> <li> if(!file_exists($wzdir2)){ </li> <li> mkdir($wzdir2); </li> <li> }</li> <li> //파일 이름 구성</li> <li> $wztitle="./".$wzdir."/"."$t[0]".".txt";</li> <li> //저장된 파일 이름이 맞는지 확인 잘못된 문자가 아닙니다</li> <li> $wztitle=iconv("UTF-8", "GBK", $wztitle);</li> <li> $f=fopen($wztitle,"w ");</li> <li> fwrite($f, $cons) ;</li> <li> echo "<font color='green'>$wzdir </font>".$wzchapter."<font color='red'>쓰기 성공</font>"; </li> <li> fclose($f); </li> <li> </li> <li> } </li> <li> else{</li> <li> $ids=self::getBookIdsById($id) </li> <li> </li> <li> //여기 서버는 오프라인일 수 있습니다. , 따라서 세션 기록 루프를 사용하는 것이 가장 좋습니다</li> <li> #for($i=$_SESSION["$id"."_fid"];$i<=count($ids);$_SESSION["$id"." _fid" ] ,$i ){<li> <li> #self::createBookById($id."_".$ids[$_SESSION["$id"."_fid"] ]);//구성 ID<li> #}<li> <li> for($i=$_SESSION["$id"."_fid"];$i<=count($ids);$_SESSION["$id"."_fid"] ,$ i ){<li> <li> self::createBookById($id."_".$ids[$i]);//ID 생성<li> }<li> <li> #echo "< hr/ ><hr/><br/><h1 id="작성-작업이-완료되었습니다">작성 작업이 완료되었습니다</h1>";<li> #echo $id."_".$ids[0]." < ;br/>"; </li> <li> #var_dump($ids);</li> <li> </li> <li> }</li> <li> <li> }</li> <li> /*</li> <li> 소설의 모든 ID 가져오기</li> <li> @ param $ id 기사 ID</li> <li> @return array;</li> <li> */</li> <li> public static function getBookIdsById($aid){ </li> <li> $ch=curl_init();</li> <li> $url='http:// www.motie.com/book/'.$aid."/chapter";</li> <li> //최소 일치 항목을 얻으려면 여기에서 ?에 주의하세요</li> <li> $ru='/[sS]*?< li class="" createate="d{4}-d{2}-d{2} d{2}:d{2}:d{2}">[sS]*?<a href=" /book/'.$aid.'_(d*?)"s Programmer Joke>.*?</a>.*?/u';//정규식 일치</li> <li> //URL을 포함한 옵션 설정 </li> <li>curl_setopt($ch, CURLOPT_URL, $url);</li> <li>curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//내용을 자동으로 출력하지 않음</li> <li>curl_setopt($ch, CURLOPT_HEADER, 0);// 헤더를 반환하지 않음 Information</li> <li> cur_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 0) </li> <li> //curl 실행</li> <li> $output = cur_exec($ch);</li> <li> // 오류 발생 여부 확인</li> <li> if(curl_errno( $ch)){</li> <li> echo '컬 오류: ' . 컬_error($ch);</li> <li> }</li> <li> //컬 핸들 해제</li> <li> 컬_close($ch);</li> <li> $arr=array( );</li> <li> preg_match_all($ru,$output,$arr,PREG_PATTERN_ORDER);</li> <li> return $arr[1];</li> <li> }</li> <li> }</li> <li> <li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li>?></li> </ol></div> <em onclick="copycode($('code_Sfk'));">코드 복사</em> </div> <div class="blockcode"> <div id="code_Zt6"><ol> <li><?php<li> session_start();<li>require_once("SpiderTools.class.php");<li>if($_REQUEST["bid"]) {<li>if(is_numeric($_REQUEST["bid"])){<li> SpiderTools::createBookById(trim($_REQUEST["bid"]));<li> }<li> else{<li> echo "<br/>올바른 기사 ID를 입력하세요<br/>";</li> <li> }</li> <li>}</li> <li>?></li> <li> </ol></div> <em onclick="copycode($('code_Zt6'));">코드 복사</em> </div> <div class="blockcode"> <div id="code_i6J"><ol> <li><html></li> <li><head><meta charset="utf-8"/></head></li> <li><title>소설 다운로드 La</li> <li> <li><h1 id="Motie-중국어-홈페이지에서-보고-싶은-소설의-ID번호를-입력하시면-소설을-다운로드-받으실-수-있습니다">Motie 중국어 홈페이지에서 보고 싶은 소설의 ID번호를 입력하시면 소설을 다운로드 받으실 수 있습니다</h1></li> <li><양식 방법 ="get" action="getinfo.php"></li> <li><input type="text" id="myid" name="myid" value=""/></li> <li><input type=" 버튼" value="소설 생성" onclick="createbook();"/></li> <li></form></li> <li><div id="info" style="배경:black;height:500px;width :1067px;overflow:scroll;color:white"></li> <li></div></li> <li> <li><!-----AJAX------></li> <li><script 언어="javascript"></li> <li>var xmlHttp;</li> <li>function createbook()</li> <li>{</li> <li>xmlHttp=GetXmlHttpObject()</li> <li>if (xmlHttp==null)</li> <li> {</li> <li> 경고 ("브라우저가 ajax를 지원하지 않습니다.")</li> <li> return</li> <li> }</li> <li>var bookid=document.getElementById("myid").value</li> <li>var url="getinfo.php"</li> <li>url= url "?bid=" bookid;</li> <li>url=url "&sid=" Math.random()</li> <li>xmlHttp.onreadystatechange=stateChanged </li> <li>xmlHttp.open("GET",url,true)</li> <li>xmlHttp . send(null)</li> <li>}</li> <li> <li>function stateChanged() </li> <li>{ </li> <li>if(xmlHttp.readyState==1){</li> <li> <li> document.getElementById("info") . innerHTML="준비 중입니다. 조금만 기다려주세요~^_^~<img src="img/1.gif" /><br/>" </li> <li>} </li> <li>if(xmlHttp .readyState==2){</li> <li> <li> document.getElementById("info").innerHTML="서버에 연결하는 데 시간이 걸릴 수 있습니다^><img src="img/2.gif" / ><^<br/>"; </li> <li>} </li> <li> <li>if(xmlHttp.readyState==3){</li> <li> <li> document.getElementById("info").innerHTML= "데이터 구문 분석<img src="img/3.gif" /><br/>" </li> <li>} </li> <li> <li>if (xmlHttp.readyState==4 || xmlHttp.readyState == "완료")</li> <li> { </li> <li> </li> <li> document.getElementById("info").innerHTML=xmlHttp.responseText; </li> <li> //xmlHttp.abort();</li> <li> <li> </li> <li> <li> } </li> <li> <li> <li>}</li> <li> <li>function GetXmlHttpObject()</li> <li>{</li> <li>var xmlHttp=null;</li> <li>try</li> <li> {</li> <li> // Firefox, Opera 8.0, Safari</li> <li> xmlHttp=new XMLHttpRequest();</li> <li> }</li> <li>catch(e)</li> <li> {</li> <li> //Internet Explorer</li> <li> try</li> <li> {</li> <li> xmlHttp =new ActiveXObject("Msxml2.XMLHTTP");</li> <li> }</li> <li> catch(e)</li> <li> {</li> <li> xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");</li> <li> }</li> <li> }</li> <li> return xmlHttp;</li> <li>}</li> <li></script></li> <li></body></li> <li></html> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </li> <li> </ol></div> <em onclick="copycode($('code_i6J'));">코드 복사</em> </div> </td></tr></table> <div id="comment_52093" class="cm"> </div> <div id="post_rate_div_52093"></div> <br><br> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">본 웹사이트의 성명</div> <div>본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>인기 기사</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780570.html" title="R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780641.html" title="R.E.P.O. 최고의 그래픽 설정" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 최고의 그래픽 설정</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796785841.html" title="어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션" class="phpgenera_Details_mainR4_bottom_title">어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 몇 주 전</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780520.html" title="R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780523.html" title="R.E.P.O. 채팅 명령 및 사용 방법" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 채팅 명령 및 사용 방법</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ko/article.html">더보기</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>핫 AI 도구</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>사실적인 누드 사진을 만들기 위한 AI 기반 앱</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>사진에서 옷을 제거하는 온라인 AI 도구입니다.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>무료로 이미지를 벗다</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>AI 옷 제거제</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173405034393877.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Hentai Generator" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_title"> <h3>AI Hentai Generator</h3> </a> <p>AI Hentai를 무료로 생성하십시오.</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ko/ai">더보기</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>인기 기사</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780570.html" title="R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780641.html" title="R.E.P.O. 최고의 그래픽 설정" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 최고의 그래픽 설정</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796785841.html" title="어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션" class="phpgenera_Details_mainR4_bottom_title">어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2 몇 주 전</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780520.html" title="R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/1796780523.html" title="R.E.P.O. 채팅 명령 및 사용 방법" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O. 채팅 명령 및 사용 방법</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1 몇 달 전</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ko/article.html">더보기</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>뜨거운 도구</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/toolset/development-tools/92" title="메모장++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="메모장++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/toolset/development-tools/92" title="메모장++7.3.1" class="phpmain_tab2_mids_title"> <h3>메모장++7.3.1</h3> </a> <p>사용하기 쉬운 무료 코드 편집기</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/toolset/development-tools/93" title="SublimeText3 중국어 버전" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 중국어 버전" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/toolset/development-tools/93" title="SublimeText3 중국어 버전" class="phpmain_tab2_mids_title"> <h3>SublimeText3 중국어 버전</h3> </a> <p>중국어 버전, 사용하기 매우 쉽습니다.</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/toolset/development-tools/121" title="스튜디오 13.0.1 보내기" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="스튜디오 13.0.1 보내기" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/toolset/development-tools/121" title="스튜디오 13.0.1 보내기" class="phpmain_tab2_mids_title"> <h3>스튜디오 13.0.1 보내기</h3> </a> <p>강력한 PHP 통합 개발 환경</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/toolset/development-tools/469" title="드림위버 CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="드림위버 CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/toolset/development-tools/469" title="드림위버 CS6" class="phpmain_tab2_mids_title"> <h3>드림위버 CS6</h3> </a> <p>시각적 웹 개발 도구</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ko/toolset/development-tools/500" title="SublimeText3 Mac 버전" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac 버전" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ko/toolset/development-tools/500" title="SublimeText3 Mac 버전" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Mac 버전</h3> </a> <p>신 수준의 코드 편집 소프트웨어(SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ko/ai">더보기</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>뜨거운 주제</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/gmailyxdlrkzn" title="Gmail 이메일의 로그인 입구는 어디에 있나요?" class="phpgenera_Details_mainR4_bottom_title">Gmail 이메일의 로그인 입구는 어디에 있나요?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>7533</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>15</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/cakephp-tutor" title="Cakephp 튜토리얼" class="phpgenera_Details_mainR4_bottom_title">Cakephp 튜토리얼</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1379</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>52</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/steamdzhmcssmgs" title="Steam의 계정 이름 형식은 무엇입니까?" class="phpgenera_Details_mainR4_bottom_title">Steam의 계정 이름 형식은 무엇입니까?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>82</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>11</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/winactivationkeyper" title="Win11 활성화 키 영구" class="phpgenera_Details_mainR4_bottom_title">Win11 활성화 키 영구</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>55</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>19</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ko/faq/newyorktimesdailybrief" title="NYT 연결 힌트와 답변" class="phpgenera_Details_mainR4_bottom_title">NYT 연결 힌트와 답변</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>21</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>86</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ko/faq/zt">더보기</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796787277.html" title="ALIPAY PHP SDK 전송 오류 : '클래스 부호 데이터를 선언 할 수 없음'의 문제를 해결하는 방법은 무엇입니까?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174303625625009.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="ALIPAY PHP SDK 전송 오류 : '클래스 부호 데이터를 선언 할 수 없음'의 문제를 해결하는 방법은 무엇입니까?" /> </a> <a href="https://www.php.cn/ko/faq/1796787277.html" title="ALIPAY PHP SDK 전송 오류 : '클래스 부호 데이터를 선언 할 수 없음'의 문제를 해결하는 방법은 무엇입니까?" class="phphistorical_Version2_mids_title">ALIPAY PHP SDK 전송 오류 : '클래스 부호 데이터를 선언 할 수 없음'의 문제를 해결하는 방법은 무엇입니까?</a> <span class="Articlelist_txts_time">Apr 01, 2025 am 07:21 AM</span> <p class="Articlelist_txts_p">Alipay PHP ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796790404.html" title="JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오." class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174378264165720.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오." /> </a> <a href="https://www.php.cn/ko/faq/1796790404.html" title="JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오." class="phphistorical_Version2_mids_title">JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오.</a> <span class="Articlelist_txts_time">Apr 05, 2025 am 12:04 AM</span> <p class="Articlelist_txts_p">JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796782794.html" title="PHP에서 늦은 정적 결합의 개념을 설명하십시오." class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202503/21/2025032113332596253.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHP에서 늦은 정적 결합의 개념을 설명하십시오." /> </a> <a href="https://www.php.cn/ko/faq/1796782794.html" title="PHP에서 늦은 정적 결합의 개념을 설명하십시오." class="phphistorical_Version2_mids_title">PHP에서 늦은 정적 결합의 개념을 설명하십시오.</a> <span class="Articlelist_txts_time">Mar 21, 2025 pm 01:33 PM</span> <p class="Articlelist_txts_p">기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796786130.html" title="프레임 워크 보안 기능 : 취약점 보호." class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202503/28/2025032817115475121.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="프레임 워크 보안 기능 : 취약점 보호." /> </a> <a href="https://www.php.cn/ko/faq/1796786130.html" title="프레임 워크 보안 기능 : 취약점 보호." class="phphistorical_Version2_mids_title">프레임 워크 보안 기능 : 취약점 보호.</a> <span class="Articlelist_txts_time">Mar 28, 2025 pm 05:11 PM</span> <p class="Articlelist_txts_p">기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796786131.html" title="프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법." class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202503/28/2025032817124947598.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법." /> </a> <a href="https://www.php.cn/ko/faq/1796786131.html" title="프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법." class="phphistorical_Version2_mids_title">프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법.</a> <span class="Articlelist_txts_time">Mar 28, 2025 pm 05:12 PM</span> <p class="Articlelist_txts_p">이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796787536.html" title="PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174269580466138.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까?" /> </a> <a href="https://www.php.cn/ko/faq/1796787536.html" title="PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까?" class="phphistorical_Version2_mids_title">PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까?</a> <span class="Articlelist_txts_time">Apr 01, 2025 pm 03:12 PM</span> <p class="Articlelist_txts_p">PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796788900.html" title="확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오." class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/253/068/174360984159295.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오." /> </a> <a href="https://www.php.cn/ko/faq/1796788900.html" title="확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오." class="phphistorical_Version2_mids_title">확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오.</a> <span class="Articlelist_txts_time">Apr 03, 2025 am 12:04 AM</span> <p class="Articlelist_txts_p">PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ko/faq/1796786988.html" title="시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/001/246/273/174304058392432.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까?" /> </a> <a href="https://www.php.cn/ko/faq/1796786988.html" title="시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까?" class="phphistorical_Version2_mids_title">시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까?</a> <span class="Articlelist_txts_time">Mar 31, 2025 pm 11:54 PM</span> <p class="Articlelist_txts_p">시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.</p> </div> </div> <a href="https://www.php.cn/ko/be/" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!</p> </div> <div class="footermid"> <a href="https://www.php.cn/ko/about/us.html">회사 소개</a> <a href="https://www.php.cn/ko/about/disclaimer.html">부인 성명</a> <a href="https://www.php.cn/ko/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1744863619"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> </body> </html>