변수에 해당 문자열만 있을 때.

변수에 해당 문자열만 있을 때.

QA

변수에 해당 문자열만 있을 때.

답변 5

본문

아무리 검색을 해도 PHP 문서중에 해당 문자열만 있을 경우를 찾아주는 함수가 없는 듯 합니다.

 

제가 원하는 건 변수에 ㄱ이라는 문자만 있을 경우, 즉 ㄱㄱ 이든 ㄱㄱㄱㄱㄱ이든 변수에 ㄱ만 있을 경우를 찾고싶습니다. 문자열 관련 함수를 찾아보니 해당 문자열을 자르거나, 비교하는 것뿐이라 도대체 어떻게 해야할 지 모르겠네요.

이 질문에 댓글 쓰기 :

답변 5


<?php
function str_consist_of_same_char($haystack, $needle) {
    $a = str_replace($needle, '', $haystack);
    $b = strlen($a);
 
    return $b === 0;
}
$a = 'ㄱㄱㄱㄱㄱㄱㄱㄱ';
$b = 'ㄱㄱㄱㄱㄱㄱ ㄱ';
$c = 'ㄱㄱㄴㄱㄱㄱㄱㄱ';
var_dump(str_consist_of_same_char($a, 'ㄱ'));
var_dump(str_consist_of_same_char($b, 'ㄱ'));
var_dump(str_consist_of_same_char($c, 'ㄱ'));
?>

$aaa='1111ㄱㄱㄱ000';

if (strpos($aaa,'ㄱ') === false){

//없음

}else{

//있음

}

strpos로 하시면 되는데 기본적으로  ㄱ 만 있을 경우는 안됩니다.

그럴경우는 strpos("@".$aaa,"ㄱ") 이런식으로 문자열 앞자리에 아무거나 붙여 주시면 됩니다.

이럴땐 그냥 if문 사용하시면 됩니다...

 

$a = "ㄱ";

$b = "ㄱㄱㄱ";

 

if ( $a == "ㄱ"){

  결과 : true(참)

}else{

  결과 : false(거짓)

}

 

입니다...

 

반대로

if ( $b == "ㄱ"){

  결과 : false(거짓)

}else{

  결과 : true(참)

}

 

"ㄱ"이기만 원한다면 이런식으로 처리하시는게^^;;

전부 한글이면(다른 특수문자, 영문, 공백이 없으면) str_split 사용해서 배열로 만든 다음 비교해보세요~

$a = '가나다';

$b = str_split($a, 3);

 

아래처럼 해도 됩니다.

 

$c = mb_strlen($a, 'utf-8');
for($i=0; $i<$c; $i++){
    $asd = iconv_substr($a, $i, 1, 'utf-8');
    if($asd !== 'ㄱ') {
        echo 'ㄱ아님';
    }
}

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 124,019
© SIRSOFT
현재 페이지 제일 처음으로