ITmembers.net 아카이브 · 2002–2009

질문과 답변

[RE] 게시판 프로젝트 1에서 질문입니다.

>그런데 list.php에서요... 글제목이 리스트에 뿌려지는데... 거기에서 글제목을
>테이블 크기에 맞게 만일에 30바이트면 30바이트
>
>50바이트면 50바이트로 자르고 싶거든요... 글제목이 너무길면 2줄로 나오
>더라구요..
>
>글제목이 너무길면 어느정도에서 잘라서 ... 이렇게 표시하고 싶은데...
>어떻게 해야될지 잘몰라서 이렇게 질문 드립니다...
>
>답변좀 부탁드릴께요...


substr() 함수를 이용하면 원하는 길이만큼 문자를 자를 수 있습니다.
사용법은 뭐 간단하죠.

$cut_subject = substr($subject,0,50);

위처럼 하면 $subject 를 50바이트까지 잘라서 반환합니다.
근데 문제가 있죠. 한글은 2바이트라 저런 경우 간혹
외톨이문자(?으로 표시)가 생기게 됩니다. 아래는 많이 사용하는
글자를 잘라주는 함수입니다.

function cut_str($msg,$cut_size){
        $msg_size=strlen($msg);//$msg 의 길이를 구한다.

        for($i=0,$r=0;$i<$cut_size;$i++){
                $real_cut_size++;
                if(ord($msg[$r])>127){//한글일 경우
                        $real_cut_size++;
                        $r++;//한글일 경우 길이가 2여서 다음값으로 가기 위해서는 +1을 한다.
                }
                $r++;//다음자료를 가져옴
        }
        
        if($msg_size<=$real_cut_size){// 글길이 이하로 자를 경우 그냥 리턴한다.
                return $msg;
        }else{// 글길이가 $cut_size 보다 클 경우 자르고 뒤에 ... 을 붙인다.
                $str=substr($msg,0,$real_cut_size);
                $str.="...";
        }
        return $str;
}

저 함수를 쓰고 적용하려는 곳에 cut_str($subject,50); 이라 해주면 되겠죠.


>아참 그리고 오늘 바로 검색기능을 추가했는데... 음 특정 필드에서 검색을 해
>
>오는거잔아요... 그런데 만일에 검색을 전체에서 검색해올려면 어떻게 해야
>
>될까요???
>
>즉, 작성자,제목,내용 이거 모두가 선택되어진 곳에서 검색을 할려면???


쿼리문을 그렇게 만들면 되겠죠. 예를들어 작성자는 name, 제목은 subject, 내용은 content 라는 컬럼명으로 테이블에 지정되어 있다면

SELECT * FROM table WHERE name like "%검색어%" or subject like "%검색어%" or content like "%검색어%";

처럼 해주면 되겠죠.