특정 검색만 대소문자 구분되게

특정 검색만 대소문자 구분되게

QA

특정 검색만 대소문자 구분되게

본문

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'))))

3696253845_1612399707.6044.png
 

소문자 a로 시작하는 5자리
((INSTR(BINARY(wr_subject), 'array') or INSTR(BINARY(wr_content), 'array')))

3696253845_1612399752.648.png

 

대문자 A로 시작하는 5자리
((INSTR(LOWER(wr_subject), LOWER('Array')) or INSTR(LOWER(wr_content), LOWER('Array'))))

3696253845_1612399769.8767.png

 

소문자 a로 시작하지 않는 검색어
((INSTR(LOWER(wr_subject), LOWER('test')) or INSTR(LOWER(wr_content), LOWER('test'))))
3696253845_1612399785.2867.png

 

 

그누보드 코어를 변경하는 일이고 

상당히 제한적이므로 수정하는 걸 추천하지는 않습니다 

array를 검색하는 사람이 대소문자를 구분해서 검색하는지 아닌지 

프로그램이 판단할 수 없기 때문인데요 

array로 검색시 대문자로 시작된 Array 검색 결과를 보고 싶을 수도 있다는 얘기죠 

그래서 제가 적어드린 코드는 비추고요 

제대로 하려면 검색시 대소문자 구분 체크박스를 만들어서 

사용자가 선택하게끔 해야 좋을 것 같아요 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 125,873 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT