2013-01-09 4 views
0

PHP의 문자열에서 추가 공백 문자를 모두 제거하려고합니다. 문자열 소스는 고객 리뷰의 XML 피드에서 가져온 것입니다.긁힌 XML 피드에서 팬텀 개행 문자를 제거하십시오.

몇 개의 리뷰에는 너무 많은 공백이 있고 그들은 내 html에 나타납니다! 스페이스 바가 여러 번 눌려 지거나, 캐리지 리턴 또는 줄 바꿈, 문자 사이에 하나의 공백이 최대로 허용됩니다. ' '.

$review = str_replace(array('\n','\r\n',PHP_EOL,'\0','\t'), '', $reviewText[1]); 
$review = trim(ereg_replace(' +', ' ', $review)); 

는 또한, 난 여전히이 보이지 않는 공백/개행 문자가 사라 얻을 수없는 최선의 노력에도 불구하고 대신 trim(ereg_replace( 라인

preg_replace('/\s\s+/', ' ', $review);를 사용하여 시도했다.

아이디어가 있으십니까?

나는 어떤 종류의 식별 정보를 대체하기 위해 xxx와 아래 리뷰를 붙여 넣었습니다.

http://www.mangomm.co.uk/test/string.php

+0

입력 및 예상 출력은 무엇입니까? –

+0

'\ n'앞에 '\ r \ n'을 입력해야합니다. – djot

+0

@ shiplu.mokadd.im 입력 텍스트를 http : // pastie에 붙여 넣었습니다.org/5651839 문자열에서 모든 개행 문자를 제거하고 싶습니다. – Gravy

답변

1

rtrim() ltrim() trim()

이 당신을 위해 무엇을 찾고 있는지해야한다.

trim('----') 출력해야 '

rtrim('----a----'); 출력해야'---- A는

ltrim('----a----'); 정상적으로 출력 A는 ----

각 하이픈 공간을 나타낸다.

편집 : 후

그리고 은 내가 읽은 게시물 :

새로운 라인이 끊기 선 (<br>, <br /> 등)인가? print_r이 텍스트를 htmlentities로 변환하지 않습니다.

+0

개행 문자가 무엇인지 알지 못합니다 ... 내가 본 리뷰를 작성하지 않았습니다 ... 그러나 print_r을 사용하면 개행 문자가 그대로 유지됩니다. – Gravy

+0

'print_r' 대신'var_dump()'를 사용하면, 그것이 무엇인지를 보여줄 것입니다. –

+0

var dump로 업데이트 된 질문보기 감사합니다 – Gravy

1

ereg_* 기능 deprecated 같습니다이 여기 아래에 검토가있는 var_dump($review);

의 출력이다. 그들을 사용하지 마십시오.

다음 정규식

preg_replace('/[[:space:]]+/', ' ', $review); 

[:space:] 경기를 공백 문자를 작동합니다. "C""POSIX" 로케일이 공간, 용지 공급 (\f), 줄 바꿈 (\n), 캐리지 리턴 (\r), 수평 탭 (\t) 및 수직 탭 (\v)

있다
+0

고마워요. 그러나 아무것도하지 않습니다. 출력 된 텍스트에 대한 링크가있는 업데이트 된 질문을 참조하십시오. – Gravy

+0

@Gravy 작동 원리, http://ideone.com/bx5Zca. –

+0

죄송합니다. 나에게 적합하지 않습니다. pastie가 보이지 않는 개행 문자를 실제로 복사하지 않은 것처럼 보입니다. – Gravy