2010-11-29 5 views
14
나는이 같은 문자열에서 여분의 공백을 제거하기 위해 노력하고있어

:PHP를 제거 여분의 공백

안녕하세요             세계

안녕하세요 세계

누구든지 PHP에서 어떻게 할 생각이 있습니까? regexp와 함께

답변

28

: 당신은 또한 모든 멀티 흰색 문자를 제거하려면

preg_replace('/()+/', ' ', $string); 

, 당신은 \ S를 사용할 수는

preg_replace('/(\s)+/', ' ', $string); 
+2

정규 표현식의 괄호는 필요하지 않습니다. – alex

4
$str = 'Why do I 
      have so much white space?'; 

$str = preg_replace('/\s{2,}/', ' ', $str); 

var_dump($str); // string(34) "Why do I have so much white space?" 

See it! (\ s에 흰색 자)

한정자 +을 사용할 수도 있습니다. 왜냐하면 항상 r 그것을 와 배치합니다. 그러나, 귀하의 의도를 명확하게 보여주기 위해 {2,}이 있습니다. 거기 preg_replace 문서

+0

시도했지만 텍스트의 맨 앞이나 끝에 공백을 제거하지 않습니다. 문자열이'$ str = '많은 공백이있는 텍스트'인 경우''공백이 많은 텍스트 ''를 반환합니다. 나는 공간이 많은 텍스트를 기대한다. – Mai

+0

@Mai 그 이유는 코드가 공백을 제거하지 못하기 때문입니다. 문자열을 자르려면'trim()'을 사용하십시오. – alex

0

내 언어가 아니지만 여러 공백을 단일 공백으로 대체하는 것이 좋습니다. \s은 공백을 나타내며 +은 하나 이상의 공백을 의미합니다. 결국 g은 전체적으로 (즉, 두 번 이상) 수행하는 것을 의미합니다.

+0

예제에는'\ s \ s +'가 있습니다. 왜? 그들이 플러스 대신에 별표를 사용했는지 이해할 수 있습니다. 별표는 0 번 이상을 의미합니다. 따라서 정규식을 두 배로 늘려야합니다. 그러나 더하기는 하나 이상을 의미합니다. 특별한 이유가 있습니까? 여전히 작동해야하지만 불필요한 것처럼 보입니다. –

+1

W. 나는 이유가 그것이 단지 2 개 이상의 공간에서 일치하도록하는 것이라고 생각한다. - 단 하나의 공간 만 있다면 교체 할 필요가 없다. 이것은 덧붙여 말하자면, '\ s {2,}'와 alex의 답처럼 동일합니다. –

0

아니 PHP 전문가에 여분의 공백을 제거하는 방법에 대한 예입니다 만, REGEX를위한 작업 같은 그의 소리 .... 다시

<?php 
$string = 'Hello  World  and Everybody!'; 
$pattern = '/\s+/g'; 
$replacement = ' '; 
echo preg_replace($pattern, $replacement, $string); 
?> 

은, PHP는