본문으로 바로가기

공백일때 : /\s/
공백 2개 이상일때 : /[ ]{2,}/ 또는 /\s{2,}/
공백이 2개일때 : /\s\s/
모든 공백을 없앨 때 : /\s+/

원래 html 소스코드안에서는 여러개의 공백을 집어넣어도 한개의 공백으로 밖에 인식을 못한다.
따라서 테스트 하고싶을 때는 pre 테그를 쓴다.
( * 참고 : pre 테그는 <pre>와 </pre> 사이에 입력한 내용을 그대로 출력하는 테그 )

다음은 테스트 할때 사용했던 소스코드이다.


# 함수 선언
function clearPatternStr($str, $pattern = "/\n/", $replace = ""){
    return preg_replace($pattern,$replace,$str);
}

# content 선언
$content = "
test 중  입니다.   과    연? 
"; echo $content; //출력 : test 중 입니다. 과 연? # 함수 실행 $content1 = clearPatternStr($content, /\s/); echo $content1; //출력 : test중입니다.과연? $content2 = clearPatternStr($content, /\s{2,}/); echo $content2; //출력 : test 중입니다.과연? $content3 = clearPatternStr($content, /\s\s/); echo $content3; //출력 : test 중입니다. 과연? $content4 = clearPatternStr($content, /\s+/); echo $content4; //출력 : test중입니다.과연?

위의 소스코드를 설명하자면,

- content1은 공백 하나를 의미. 공백 하나를 모두 제거하므로 출력시 공백이 하나도 남아있지 않는 값이 return 된다.

- content2는 공백이 2개 이상인 공백만 제거하므로 'test 중' 이라는 사이에 있는 공백은 한개, 따라서 두개 이상이 아니므로 제거되지않은 값이 return되어 위의 모양과 같아 진다.

- content3은 공백이 두개일때만 제거하므로 "test 중" 사이에 있는 공백 한개 짜리는 제거 되지않고,

   "입니다.   과" 사이에는 세개짜리의 공백이었으므로 두개짜리 공백이 세거되어 한개짜리 공백만 남아 위와같이 출력된다.

- content4는 모든 공백을 제거하므로 위와 같이 모든 공백이 제거된 내용이 출력된다.