2011-05-02 6 views
2
$str = 1,gmail,6.69%,2,google,3.01%,3,google maps,0.98; 

은 그래서 위의 (안 비율 일)에서 번호를 다듬을 :빈 칸과 빈 칸을 어떻게 제거합니까?

$str = preg_replace('/(?<!\w|\.)\d+/', '', $str); 

결과는

,gmail,6.69%,,google,3.01%,,google maps,0.98; 

그러나 이것은 나에게 공백 및 쉼표를 제공합니다. 어떻게 제거 할 수 있습니까? 모든 콤마가 공백 인 것은 아닙니다.

+0

일치하는 항목에 쉼표를 포함하여 바꿀 수 있습니다. 라인의 시작/끝 부분에 대해 생각해보십시오. 특별한 것을해야 할 것입니다. 아마 추한 정규 표현식이 될 것입니다. –

+0

왜 '0.98'은 대체되지 않아야합니까? 그것은 숫자이며 백분율의 일부가 아닙니다 ... –

답변

4

나는 이것을 분할하여 개별적으로 처리하기로 결정했습니다. 무엇보다 IMO를 읽는 것이 훨씬 쉽습니다.

$values = explode(',', $str); 

$values = preg_grep('/^\d+(\.\d+)?\z/', $values, PREG_GREP_INVERT); 

$str = join(',', $values); 

CodePad.