[제로] 검색 버그 고치기

페이지 정보

루루아빠 2,301 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,290,006
레벨 96
경험치 1,387,199

Progress Bar 67%

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

댓글

첫 번째 댓글을 남겨 주세요

Total 7463538 페이지
제목 글쓴이 날짜 조회 추천
제로  🏆 생일인 회원 로그인시 축하송 및 메세지 띄우기 ( 양력●음력 포함 ) 루루아빠 2006.05.23 5,042 0
제로  🏆 회원 가입시 양력 음력 선택하기 루루아빠 2006.05.23 2,934 0
제로  댓글+1🏆 회원가입시 자동환영 쪽지보내기! 루루아빠 2006.03.09 3,226 0
제로  🏆 💾 제로보드 연동 사진 무한 업로드 소스.... 루루아빠 2005.09.16 3,707 0
제로  🏆 특정게시판에서 작성된 게시물 원하는 게시판에 동시에 등록 <아래게시물과연동> 루루아빠 2005.09.11 4,115 0
제로  🏆 여러게시판에서 쓴 게시물을 한개의 게시판에 수시로 복사 루루아빠 2005.09.11 2,969 0
제로  🏆 쓰기에서 허용태그 미리보여주기 루루아빠 2005.09.11 3,091 0
제로  🏆 공지사항글에는 코멘트 못달게 하기 루루아빠 2005.08.06 3,193 0
제로  댓글+1🏆 전체에게 메일링 체크하고 싶을때에 루루아빠 2005.07.24 3,110 0
제로  🏆 글쓴 후 하단 리스트에 특정 카테고리 글만 보여주지 않고 전체 목록을 보여주기 루루아빠 2005.07.23 3,110 0
제로  🏆 최근 갤러리 & 갤러리 목록 이미지 흑백 설정 루루아빠 2005.07.20 2,819 0
제로  🏆 💾 업로드된 이미지가 있을때에 게시판 목록에 그림 아이콘 표현하기 루루아빠 2005.07.19 2,793 0
제로  🏆 💾 특정 회원에게 쪽지 스킨을 적용해봅시다 루루아빠 2005.07.19 2,580 0
제로  🏆 로그아웃시 현재접속자 리스트에서 바로 안나오게 하기 루루아빠 2005.07.14 2,309 0
제로  댓글+1🔒 닉네임과 이름앞 아이콘을 회원들이 직접 업로드 할경우 탈퇴시 문제점의 해결책 루루아빠 2005.07.12 16 0
제로  🏆 📸 💾 제로보드 비밀번호 힌트와 답으로 웹에서 바로찾기 루루아빠 2005.07.11 2,414 0
제로  댓글+1🏆 음악스킨 안될때 처방법.. 루루아빠 2005.07.09 2,305 0
제로  🏆 💾 원하는 곳에 카테고리 뿌려주기(메뉴로 활용 가능) 루루아빠 2005.07.08 2,163 0
제로  🏆 🚩 검색 버그 고치기 루루아빠 2005.07.08 2,302 0
제로  🏆 동영상(음악,뮤비,플래쉬) 업로드시 자동실행법 루루아빠 2005.07.08 2,304 0