리스트에서 검색시 문의드립니다.
본문
1.
리스트에 내용을 뽑아오도록 했습니다. 내용에 있는 단어로 검색을 하면 검색은 되는데 검색 단어 배경색이 변하지 않습니다.
제목이나 여분필드도 사용중인데 다 잘되는데 내용만 검색 단어 배경색이 바뀌지 않네요.
2.
여분필드에 값이 12,000 입니다.(콤마가 들어있습니다.)
검색창에 12,000을 입력하면 검색이 안되네요.
참고로 마침표가 들어간 단어나 숫자는 검색이 됩니다.
여러 고수님들의 고견 부탁드립니다.
답변 2
검색 시 색상을 입히는 함수는 search_font() 입니다.
이를 응용하면 됩니다.
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
Lib에 common.lib.php에
function get_search_string($stx)
{
$stx_pattern = array();
$stx_pattern[] = '#\.*/+#';
$stx_pattern[] = '#\\\*#';
$stx_pattern[] = '#\.{2,}#';
$stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\&\!\$~\{\}\[\]`;:\?\^\,]+#';
$stx_replace = array();
$stx_replace[] = '';
$stx_replace[] = '';
$stx_replace[] = '.';
$stx_replace[] = '';
$stx = preg_replace($stx_pattern, $stx_replace, $stx);
return $stx;
}
검색어 관련 stx는 get_search_string해서 전달 합니다. 인젝션 방어고 12,000 으로 입력하시면 실제 디비에서 12000 를 instr하고 있는 row를 찾게 됩니다. 점은 한개까지는 되고 연속점은 안되는게 맞습니다.