2014-05-14 4 views
1

간단한 문자열에서 공백을 제거하려고하지만 정규식이 붙어있는 것처럼 보입니다.Regex 공백 제거

문자열은 다음과 같다 :

$string = '"4 " <sup>5</sup> "6 "<sup>7</sup>'; 

내가 여기이 문제는 내가 "4"의 공간을 제거하려고하고 "6"하고 있다는 점이다.

나는 시도하고 다음과 같이이해야 할 코드 :

if (preg_match('/.*?[a-zA-Z0-9](\s+)/is', $string, $matches)) 
{ 
    $string = str_replace(' ','', $matches[0]); 
} 

.. 지금까지하지만 어떤 생각을 행운을 갖거나 내가 이상 일을 복잡하게하고하지?

감사합니다.

+1

제거 할 공백과 공백을 그대로 유지하는 규칙은 무엇입니까? 그것은 "영숫자 뒤에 오는 공간"입니까? 또는 "닫는 인용 문자 앞의 공백"? 또는 다른 것? –

+0

닫는 따옴표 앞의 공백을 제거해야합니다. – user1297396

답변

0

시도해주세요.

$new = preg_match('/"([0-9])\s+"/is', '"$1"', $string); 

이 일치에 "numberspaces"만 "number"부분을 유지합니다.

+0

설명의 비트가 좋을 것입니다. – gsamaras

1

문자열의 모든 공백을 대체하려면 정규식에 대해 걱정하지 않으셔도됩니다. 문자열의 모든 공백을 바꾸지 않는 이유는 무엇입니까?

$newString=str_replace(" ","",$yourString); 

질문에서 얻는 것을 얻는 것이 가장 쉬운 방법 인 것처럼 보입니까?

+0

불행히도 이렇게하면 이상적이지는 않을 것입니다. 제공된 문자열이 예제입니다. 정확히 동일한 문자열을 가진 단락이 있으면 모든 단일 공간이 제거됩니다. – user1297396

2

제 생각에 닫는 인용 전에 공백을 제거하려고합니다.

$string = '"4 " <sup>5</sup> "6 "<sup>7</sup>'; 
print preg_replace('/"([^\s"]+)\s*"/', '"$1"', $string); 
# "4" <sup>5</sup> "6"<sup>7</sup>