개발 Q&A

제목 검색시 검색해당 글자에 특정 색상 입히는 작업을 하고 있는데요.
글쓴이 amkor 작성시각 2014/05/21 11:46:18
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 12703   RSS
foreach ($data_result["qry"] as $i => $row) {
			$data_list[$i]->title    = (strpos($searchkey, 'title')) ? search_font(utfChange($row["title"]), $searchvalue) : utfChange($row["title"]);
----생략----
}





보시면 $searchvalue는 검색어   $searchkey 검색 필드입니다.

소스 보시면  searchkey의 검색 필드가 title이면   

search_font 함수로 빠져 나가는건데요.. 

이 함수는 helper 함수로 저장했고 자동으로 불러내도록 했습니다.

 
function search_font($str, $stx, $tag_open='', $tag_close = '') {
        
    if ($str == '')
        return FALSE;

    if ($stx != '') {
        // 문자앞에 \ 를 붙인다.
        $src = array('/', '|');
        $dst = array('\/', '\|');

        if (!trim($stx)) return $str;

        // 검색어 전체를 공란으로 나눈다
        $s = explode(' ', $stx);

        // '/(검색1|검색2)/i' 와 같은 패턴을 만듬
        $pattern = '';
        $bar = '';
        foreach($s as $row) {
            if (trim($row) == '')
                continue;
            $tmp_str = str_replace($src, $dst, quotemeta($row));
            $pattern .= $bar . $tmp_str . '(?![^<]*>)';
            $bar = '|';
        }

        return preg_replace('/('.$pattern.')/i', $tag_open.'\\1'.$tag_close, $str);

        // 기존
        // return preg_replace('/('.preg_quote($stx, '/').')/i', $tag_open."\\1".$tag_close, $str);
    }

    return $str;
}




그런데 검색만 잘 되고 아무 반응이 없네요 ㅠ,ㅠ 왜 그런건지 ㅠ,ㅠ













 
 다음글 세션에 대한 질문입니다(Rest와 병행입니다!) (2)
 이전글 500에러 (7)

댓글

변종원(웅파) / 2014/05/21 13:48:09 / 추천 0
변환된 html 소스를 보세요. 해당 소스 부분이 치환이 된건데 화면에 바뀐 색으로 안나오는건지
아예 변환이 안된건지 체크해보세요.
amkor / 2014/05/21 13:51:13 / 추천 0
아예 변환이 안되네요,.ㅠ,ㅠ 
변종원(웅파) / 2014/05/21 13:55:23 / 추천 0
$searchkey 이게 어디서 나온건지 관련부분을 볼 수가 없으니 답변하기 힘듭니다.
변환이 안됐다면 foreach단에서 작동을 안하거나 해당 함수를 실행했지만 제대로 작동안했거나 2가지 케이스만 남았네요.

게시판 이동합니다.
amkor / 2014/05/21 13:58:54 / 추천 0
<select name="searchkey" style="width:100px">
                   <option value="title" <?=($searchkey=="title") ? "selected" : "";?>>제 목</option>
                   <option value="content" <?=($searchkey=="content") ? "selected" : "";?>>내 용</option>
                  </select>

이것은 제목으로 검색할껀지 , 내용으로 검색 할껀지  검색 필드입니다.    만약 제목으로 검색하면  $searchkey 은 title로 나옵니다.
amkor / 2014/05/21 14:04:36 / 추천 0
search_font 함수 alert로 찍어 보았지만 안나오는것 봐서    (strpos($searchkey, 'title')) 

이부분이 문제가 있는거 같습니다..
한대승(불의회상) / 2014/05/21 14:12:46 / 추천 0
$searchkey 에 들어 있는 데이타 확인해 보세요.
amkor / 2014/05/21 14:13:01 / 추천 0
아 알고 보니깐 <code> </code> 이 html 태그가 안먹히네요.. font로 바꾸니깐 되네요 ㅡㅡ;
amkor / 2014/05/21 14:21:31 / 추천 0
(strpos($searchkey, 'title')) <-- 이부분은 왜 안되는건지 ㅠ,ㅠ   그래서 일단은  ($searchkey =='title') 이것으로 대체 했는데 ㅠ,ㅠ