본문 바로가기

스크립트/Php 코드 팁

문자중 숫자만 두고 나머지는 제거하기.

간단하게 아래처럼 숫자 외의 문자를 제거하면 됩니다. 

$aaa = '1<as>d23adasd'; 
$aaa = preg_replace('/[^\d]/','',$aaa); 
echo $aaa; // 123 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 


━【for】━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

참고로 덧붙입니다. for() 사용하려면 차라리 아래처럼 하세요. 

$new = ''; 
$len = strlen($aaa); 
for ($i=0;$i<$len;$i++) if ( is_numeric($aaa[$i]) ) $new.= $aaa[$i]; 
echo $new; // 123 

↓ 첫 조건에 같이 넣어둘 수 있습니다. 

$aaa = '1<as>d23adasd'; 
for($i=0,$new='',$len=strlen($aaa);$i<$len;$i++)if(is_numeric($aaa[$i]))$new.=$aaa[$i]; 
echo $new; // 123 

──────────────────────────────────────── 

문자열 길면 배열 사용도 좋습니다. 

$aaa = '1<as>d23adasd'; 
$temp = array(); // 배열 
$len = strlen($aaa); 
for($i=0;$i<$len;$i++)if(is_numeric($aaa[$i]))$temp[]=$aaa[$i]; // 숫자면 배열에 추가 
$aaa = implode('',$temp); // 배열 묶기 
echo $aaa; // 123 

──────────────────────────────────────── 

추가 코드 덧붙입니다. 

$aaa = '1<as>d23adasd'; // 대상 문자열 
$test = range(0,9); // 0,1,2,3,4,5,6,7,8,9 배열 ★ 
$test = array_flip($test); // 배열 뒤집기 (순서가 같지만 나중에 일부 문자열 대상 활용 가능합니다. 
$len = strlen($aaa); // 문자열의 길이 
$temp = array(); // 문자열로 결합하거나, 배열로 추가해 묶거나 약간의 차이가 있는데 편한 방법 사용 
for ($i=0;$i<$len;$i++) 

if ( isset($test[$aaa[$i]]) ) $temp[] = $aaa[$i]; // 변수 정의되어 있으면 배열 추가 ☆ 

$aaa = implode('',$temp); // 배열 묶기 
echo $aaa; // 123 

★ 표시의 배열 값을 바꾸면 해당 배열에 쓰인 문자만 걸러낼 수 있습니다. 

$test = array('a','e','i','o','u'); // 편하게 $test = explode(' ','a e i o u'); 
이렇게 하면 지정한 문자만 남습니다. ☆ 조건을 변경하면 지정한 문자 외의 문자만 남길 수 있지요. 

if ( !isset($test[$aaa[$i]]) ) $temp[] = $aaa[$i]; // isset 앞에 ! 붙여 반대로 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

참고로 그냥 기본적인 코드였습니다. 
참고 링크 덧붙입니다. 

is_numeric() 
http://php.net/manual/kr/function.is-numeric.php [한글 구 버전] 
http://php.net/manual/en/function.is-numeric.php 

기타 댓글에 쓰인 함수를 찾아 설명 및 예제를 보면 도움이 많이 될 거에요. 

"언어 레퍼런스"는 즐겨찾기 필수입니다. 
http://php.net/manual/kr/langref.php 
http://php.net/manual/en/langref.php