[제로] 검색 버그 고치기

페이지 정보

루루아빠 2,346 2005.07.08 11:55

평점

  • 평점 : 0점 (0명 참여)

본문

include 폴더의 list_check.php 에서 아래부분을 찾아서 교체해주세요... (해당부분 드레그해서 수정후버전으로 붙여넣기 하시길 권장)


원본:

 // 검색어에 해당하는 글자를 빨간;; 색으로 바꾸어줌;;
         if($keyword) {

                 $keyword_pattern = "/$keyword/i";
                
                 if($sn=="on") $data[name] = preg_replace($keyword_pattern, "<font color=FF001E style=background-color:FFF000;>$keyword</font>", $data[name]);

                 if($ss=="on") $data[subject] = preg_replace($keyword_pattern, "<font color=FF001E style=background-color:FFF000;>$keyword</font>", $data[subject]);

                 if($ss=="on"&&$setup[cut_length]>0) $setup[cut_length]=$setup[cut_length]+52;
         }

         // ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
        $name=$data[name]=stripslashes($data[name]);  // 이름

        $temp_name = get_private_icon($data[ismember], "2");
         if($temp_name) $name="<img src='$temp_name' border=0 align=absmiddle style='filter:chroma(color=white)'>";


         $subject=$data[subject]=stripslashes($data[subject]); // 제목
        //$subject=$data[subject];
         $subject=cut_str($subject,$setup[cut_length]); // 제목 자르는 부분
        $hit=$data[hit];  // 조회수
        $vote=$data[vote];  // 투표수
        $comment_num="[".$data[total_comment]."]"; // 간단한 답글 수
        if($data[total_comment]==0) $comment_num="";
         if($setup[use_alllist]) $view_file="zboard.php"; else $view_file="view.php";
         // 제목에 링크 거는 부분;
         if($member[level]<=$setup[grant_view]||$is_admin) {
                 //if($setup[use_status]&&!$data[is_secret]) $addShowComment = " onMouseOver=\"showComment('$showCommentStr',true)\" onMouseOut=\"showComment('',false)\" ";
                 if($setup[use_status]&&!$data[is_secret]) $addShowComment = " title=\"$showCommentStr\" ";
                 $subject="<a href=\"".$view_file."?$href$sort&no=$data[no]\" $addShowComment >".$subject."</a>";
         }


수정후:

 // ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
        $name=$data[name]=stripslashes($data[name]);  // 이름

        $temp_name = get_private_icon($data[ismember], "2");
         if($temp_name) $name="<img src='$temp_name' border=0 align=absmiddle>";


         $subject=$data[subject]=stripslashes($data[subject]); // 제목
        //$subject=$data[subject];
         $subject=cut_str($subject,$setup[cut_length]); // 제목 자르는 부분
        $hit=$data[hit];  // 조회수
        $vote=$data[vote];  // 투표수
        $comment_num="[".$data[total_comment]."]"; // 간단한 답글 수
       
         // 검색어에 해당하는 글자를 빨간;; 색으로 바꾸어줌;;
           if($keyword) {
             $keyword_pattern = "/".str_replace("\0","\\0",preg_quote($keyword,"/"))."/i";
             if($sn=="on") $name = preg_replace($keyword_pattern, "<span style='color:#FF001E;background-color:#FFF000;'>$keyword</span>", $name);
             if($ss=="on") $subject = preg_replace($keyword_pattern, "<span color='FF001E' style='color:#FF001E;background-color:#FFF000;'>$keyword</span>", $subject);
           }

         if($data[total_comment]==0) $comment_num="";
         if($setup[use_alllist]) $view_file="zboard.php"; else $view_file="view.php";
         // 제목에 링크 거는 부분;
         if($member[level]<=$setup[grant_view]||$is_admin) {
                 //if($setup[use_status]&&!$data[is_secret]) $addShowComment = " onMouseOver=\"showComment('$showCommentStr',true)\" onMouseOut=\"showComment('',false)\" ";
                 if($setup[use_status]&&!$data[is_secret]) $addShowComment = " title=\"$showCommentStr\" ";
                 $subject="<a href=\"".$view_file."?$href$sort&no=$data[no]\" $addShowComment >".$subject."</a>";
         }


 2. 어느버전부터인지는 모르겟으나 검색어만 하이라이트되는게 아니라 검색어부터 뒤로 한줄이 전부다 하이라이트되는 버그

include 폴더의 list_check.php 에서 <span 으로 검색해보세요 찾으신줄의 뒷부분이  $keyword</span> 으로 되있어야 합니다.. (태그를 열기만하고 않닫아서 생긴오류죠..)

3. 드디어 마지막4번 ! 아주아주 뿌듯한 버그때려잡기 한판의 결정판!
글내용에서 검색어를 하이라이트해줄때 html 태그안에있는 단어까지 하이라이트를 매겨버리는 무서운 버그입니다.
예를 들어 검색어가 'http' 였다묜 글내용에 http는 잘 하이라이트 되겠지만.. 문제는 태그내부에 있는 http들 그러니까.. img src=http:// 부분이나.. 링크의 http 등등 무수히 많은 부분의 http가 <span 으로 둘려싸여서 이미지도 엑박뜨고 링크도 깨지고 여러가지 문제가 발생하죠...

 <img src=<span~~~~http://  이렇게 된다는거죠... 프흣~

http 는 좀 극적인 예제였지만.. 단순히 말해서 검색어와 그림화일이나 링크주소등과 일치할때 생길수 있는 상황입니다.

몇몇분들이 임시방편으로 그림태그일때나..링크일때는 처리하지 않게 하는등의 방법을 내놓으셨지만... 그보다도.. 정규식을 조금더 활용하여 일차히는 키워드가 태그에 내부에 존재하는지 외부에 존재하는지 검사후 하이라이트로 처리하도록 했습니다.


include 폴더의 list_check.php 에서 아래내용을 찾으세요...


 // 검색어가 있을경우 내용의 키워드를 변경
if($sc=="on" && $keyword) {
         $keyword_pattern = "/".str_replace("\0","\\0",preg_quote($keyword,"/"))."/i";
                 $memo = preg_replace($keyword_pattern, "<span style='color:#FF001E;background-color:#FFF000;'>$keyword</span>", $memo);
                       }

 // 이미지 리사이즈를 위해서 처리하는 부분

 

 찾으신 부분을 아래처럼 바꿔주시면 해결됩니다.

 

 // 검색어가 있을경우 내용의 키워드를 변경
if($sc=="on" && $keyword) {
     $memo = preg_replace("/($keyword)(?=[^>]*<)/i", "<span style='color:#FF001E;background-color:#FFF000;'>$0</span>", $memo);
 }

 // 이미지 리사이즈를 위해서 처리하는 부분

추천인
  • 추천해 주세요
6
루루아빠 - 회원등급 : 최고관리자 - 포인트 : 1,295,225
레벨 97
경험치 1,399,242

Progress Bar 9%

- 가입일 : 2015-03-04 03:24:54
- 서명 : KNOW YOUR LIMITS BUT NEVER STOP TRYING TO EXCEED THEM !!
- 자기소개 : 루루의 자랑 루루아빠랍니다~~

댓글

첫 번째 댓글을 남겨 주세요

Total 7483638 페이지
제목 글쓴이 날짜 조회 추천
제로  🏆 🚩 검색 버그 고치기 루루아빠 2005.07.08 2,347 0
제로  🏆 동영상(음악,뮤비,플래쉬) 업로드시 자동실행법 루루아빠 2005.07.08 2,347 0
제로  🏆 💾 회원가입시 아이디체크 (중복, 필터링, 검색, 사용시 입력창으로..) 루루아빠 2005.07.07 3,380 0
제로  댓글+1🏆 서버OS가 WindowsNT일경우 가입폼에서 메일체크 에러방지 루루아빠 2005.07.07 2,408 0
제로  🏆 공지사항 체크를 빼면 제위치로 가지 않는 문제의 해결점 루루아빠 2005.07.07 2,363 0
제로  🏆 태그 사용 체크 후 "취소" 하면 자동으로 체크 해제 루루아빠 2005.07.05 2,508 0
제로  🏆 💾 등록실패 방지 (글 등록 실패로 인한 글날림 방지) 루루아빠 2005.07.05 2,502 0
제로  🏆 특정 회원(예:운영자) 이 접속자목록에 안나오게하기 루루아빠 2005.07.05 2,338 0
제로  댓글+1🔒 게시물 작성자가 현재 접속여부표시하기 루루아빠 2005.07.05 25 0
제로  🏆 비회원은 회원정보 보지 못하게 루루아빠 2005.07.04 2,143 0
제로  댓글+1🏆 최근게시물 공지사항 첫번째 글에도 링크걸기 루루아빠 2005.07.03 2,253 0
제로  댓글+1🏆 수정된 정보를 제대로 보여주기 루루아빠 2005.07.03 2,240 0
제로  댓글+1🔒 💾 멀티갤러리 통합추출 팁 루루아빠 2005.06.27 30 0
제로  🔒 [re] 진보된 추출법 루루아빠 2005.06.27 4 0
제로  🔒 멀티게시판 코멘트 통합추출 팁 루루아빠 2005.06.27 17 0
제로  🏆 [re] 조금더 전문적인 사용법 루루아빠 2005.06.27 2,315 0
제로  댓글+1🔒 여러 게시판의 최근글 통합해서 뽑아내기 루루아빠 2005.06.27 24 0
기타  🔒 링크 타겟 새로운 창으로 열때 가운데 정렬해서 원하는 사이즈로 열기 루루아빠 2005.06.25 17 0
제로  🏆 최근 게시물보기 속도 빠르게 만들기 루루아빠 2005.06.24 2,722 0
제로  🏆 첨부파일 이미지 업로드시 미리보기 및 수정시 이미지 미리보기 루루아빠 2005.06.24 3,174 0