변수에 해당 문자열만 있을 때.
본문
아무리 검색을 해도 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 'ㄱ아님';
}
}