특정 검색만 대소문자 구분되게
본문
php 검색은 원래 알파벳 대소문자 구분 안하나요?
john 으로 검색해도 John 이가 나오네요??
자바 스크립트랑 너무 엉키네요.
5글자 이하고, 앞에 a 로 시작할때만 php 검색시 대소문자 구분되게 할려면 어떻게 해야 하나요?
답변 1
php가 아니고 mysql에서 대소문자를 구분하지 않습니다
https://zetawiki.com/wiki/MySQL_대소문자_구별
대소문자를 구분하려면 칼럼을 binary로 변경 후 비교
https://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#operator_binary
그누보드에서 검색 부분
https://github.com/gnuboard/gnuboard5/blob/master/bbs/search.php#L98
이 부분을
if (preg_match("/^[a]/", $search_str) && strlen($search_str) === 5)
$str .= "INSTR(BINARY({$field[$k]}), '{$search_str}')";
else
$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
소문자 a로 시작하는 3자리
((INSTR(LOWER(wr_subject), LOWER('arr')) or INSTR(LOWER(wr_content), LOWER('arr'))))
소문자 a로 시작하는 5자리
((INSTR(BINARY(wr_subject), 'array') or INSTR(BINARY(wr_content), 'array')))
대문자 A로 시작하는 5자리
((INSTR(LOWER(wr_subject), LOWER('Array')) or INSTR(LOWER(wr_content), LOWER('Array'))))
소문자 a로 시작하지 않는 검색어
((INSTR(LOWER(wr_subject), LOWER('test')) or INSTR(LOWER(wr_content), LOWER('test'))))
그누보드 코어를 변경하는 일이고
상당히 제한적이므로 수정하는 걸 추천하지는 않습니다
array를 검색하는 사람이 대소문자를 구분해서 검색하는지 아닌지
프로그램이 판단할 수 없기 때문인데요
array로 검색시 대문자로 시작된 Array 검색 결과를 보고 싶을 수도 있다는 얘기죠
그래서 제가 적어드린 코드는 비추고요
제대로 하려면 검색시 대소문자 구분 체크박스를 만들어서
사용자가 선택하게끔 해야 좋을 것 같아요
!-->