CI 묻고 답하기

제목 폼검증관련 질문
글쓴이 초보자 작성시각 2011/09/01 18:31:12
댓글 : 7 추천 : 1 스크랩 : 0 조회수 : 23856   RSS
일어 가타가나 체크와 관련하여 다음과 같이 코드작성했는데 에러가 현시됩니다.
컨트롤러:
$this->form_validation->set_rules('kana_sei', 'フリガナ(氏)', 'callback_kana_check');

function kana_check($str)
    {
        if(strlen($str) > 0 && !mb_ereg("^[ァ-ヶヲ-゚ー]+$", $str)) {
            $this->form_validation->set_message('kana_check', '%sはカタカナで入力してください。');
            return false;
        }
            
        return true;
    }
에러내용:
mbregex compile err: premature end of char-class

고수님들 가타가나 체크 아시는분 있으면 조언 부탁드립니다.

다음질문인데요, 계속 질문만 해서 미안합니다.
콜백함수 정의할때 위에서처럼 파라메터가 1개가 아니라 여러개 일때 폼검증방법이 궁금합니다.

예제): 폰번호(111-1111-1111)체크할때
항목은 위에서 처럼 3개로 되여있고 이3개항목을 post값으로 받아서리 총자리수가 넘치면 에라 현시하게 하려면 어떻게 해야 하나요?
영 머리가 돌지않으니....

힌트정도도 좋으니 제발 도와주세요 ,
급해서 그럽니다.
감사합니다.

태그 가타가나,체크
 다음글 데이터등록 질문 (4)
 이전글 phpDesigner File Format, File ... (3)

댓글

헛발이 / 2011/09/01 19:14:55 / 추천 0
function kana_full($str)
{
return (bool)preg_match( '/[^ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ]/', $str) ? FALSE : TRUE;
}


여기에 아주 좋은 예제가 있네요...
옮겨 오기 너무 많으니 가서 봐보세요~ ^^

http://blog.aidream.jp/codeigniter/codeigniter-form-validation-extend-class-1351.html



그리고 (111-1111-1111)는 역시 validation을 확장 해야 합니다.
예를 들면


MY_Form_validation.php를 만들어서 안에다가
    function matches_pattern($str, $pattern)
    {
        $characters = array(
          '[', ']', '\\', '^', '$',
          '.', '|', '+', '(', ')',
          '#', '?', '~' // Our additional characters
        );

        $regex_characters = array(
          '\[', '\]', '\\\\', '\^', '\$',
          '\.', '\|', '\+', '\(', '\)',
          '[0-9]', '[a-zA-Z]', '.' // Our additional characters
        );

        $pattern = str_replace($characters, $regex_characters, $pattern);
        if (preg_match('/^' . $pattern . '$/', $str)) return TRUE;
        return FALSE;
    }
이렇게 해 놓고 검증하실때
$this->form_validation->set_rules('phone', '전화번호', 'trim|matches_pattern[###-###-###]|xss_clean');
이런식으로 가능합니다..

정확한 사용방법은
http://www.michaelwales.com/2010/02/basic-pattern-matching-form-validation-in-codeigniter/
여기를 참조 하세요~
초보자 / 2011/09/01 19:28:30 / 추천 0
헛발이님 , 답변감사드립니다.
그런데 가타가나뿐 아니라 히라가나도 무난히 넘어갑니다.
가타가나만 체크하게 하려면 어떻게 해야하나요?
헛발이 / 2011/09/01 19:31:57 / 추천 0
근데 꼭 카타카나와 히라가나를 체크 해야 하나요?

아~ 제가 보내준 링크에 전각, 반각, 히라가나, 카타카나 체크 하는게 다 있네요...
거기에 우편번호 체크 하는것도 있네요 ...
한번 찾아 보세요~


체크 하실 거면 전각(젠카구), 반각(한카구) 다 체크 해야 하는거 아시죠? ^^;;;
ア랑 ァ랑 틀린거.. ^^:

초보자 / 2011/09/01 22:56:12 / 추천 0
헛발이님의 친절하신 조언덕분에 가타가나체크 해결했네요.
정말 감사합니다.
근데 전화번호 체크는 잘안되요
제가 글을 잘못 올려서 아마도 착오가 생겼는지 모르겠지만 헛발이님 대주신 방법은 입력항목이 1개일때는 잘되요,
하지만 제 경우엔 입력항목이 3개로 되여있어서 어떻게 해야 할지 모르겟네요
html코드:
{form_error('tel_num', '<div class="error" style="color: red">', '</div>')}
<input type="text" class="input_2" id="tel01" name="tel01"  value="{$useradd['tel01']}"  /> -
<input type="text" class="input_2" id="tel02" name="tel02"  value="{$useradd['tel02']}"  /> -
<input type="text" class="input_2" id="tel03" name="tel03" value="{$useradd['tel03']}"  />
이렇게 구성되였다면 컨트롤러에서 
$this->form_validation->set_rules('tel_num', '電話番号', 'trim|matches_pattern[###-####-####]|xss_clean');
이런식으로 해서 한번에 처리하구싶은데요, 무식해서 친절한 힌트에도 통 감이 안옵니다.
몇시간째 삽질인데 아시는분 도와 주세요.
미안합니다.             
헛발이 / 2011/09/02 07:56:04 / 추천 0
아 입력항목이 세개로 나눠져 있군요...
그러면 꼭 그렇게 하지 않으셔도 되죠...
그냥 하나씩 검증하면 되지 않나요?

입력을 세개로 받으면 형식은 3자리로 마춰서 들어오는거니 숫자인지 입력했는지만 검증하면 될거 같은데요..
$this->form_validation->set_rules('tel_num1', '地域番号', 'trim|required|is_natural||xss_clean');
$this->form_validation->set_rules('tel_num2', '局番', 'trim|required|is_natural||xss_clean');
$this->form_validation->set_rules('tel_num3', '電話番号', 'trim|required|is_natural||xss_clean');

초보자 / 2011/09/02 09:12:01 / 추천 0
헛발이님 말씀대로 그방법 외에 더는 없는지 궁금합니다.
항상 성의있는 답변 감사드립니다.
좋은 하루 되세요~~~~
헛발이 / 2011/09/02 09:54:40 / 추천 0
뭐... 억지로(무리아리) 만들면 만들어지겠찌만요.. ^^;;