2009-11-09 3 views
99

데이터베이스 쿼리에서 문자열을받은 다음 CSV 파일에 넣기 전에 모든 HTML 태그, 캐리지 리턴 및 개행을 제거합니다. 유일한 것은, 내가 여분의 공백을 사이의 문자열 사이에서 제거하는 방법을 찾을 수 없습니다.문자열 내에서 여분의 공백을 제거하십시오.

내부 공백 문자를 제거하는 가장 좋은 방법은 무엇입니까?

+4

이의 샘플을 게시하세요 – Zote

+0

최종 출력물을 어떻게 작성해야하는지 정리할 수 있습니까? CSV 용 데이터에 쉼표를 삽입하고, 이미 쉼표가있는 데이터베이스에서 CSV 삽입을 처리하는 함수에 문자열을 입력하는 등의 작업을 수행하고 있습니까? –

+0

ok 최종 출력은 각 단어가 하나의 공백으로 구분 된 문자열이어야하며, 여러 개의 공백이 있어야합니다. – joepour

답변

228

하지 :

  1. 당신은 당신이 trim()를 사용할 수있는 처음이나 문자열의 끝을 초과 공백를 처리하는 경우, ltrim() 또는 rtrim()을 사용하여 제거하십시오.

  2. 당신이 문자열 내 여분의 공백을 처리하는 경우 하나의 공백" " 여러의 preg_replace공백" "* 고려하십시오.

예 :

$foo = preg_replace('/\s+/', ' ', $foo); 
+52

$ foo = preg_replace ('/ \ s + /', '', $ foo); – genio

+6

이 코드는'$ foo = preg_replace ('/ \ s + /', '$, $ foo);를 사용하여 모든 새로운 행 –

+0

을 제거 할 것입니다. –

36

또는 밑줄로 교체하십시오 (& nbsp; 등 등

당신이 원하는 그러나 여기에서 두 가지 상황 정확히 무엇인지
+4

공백을 모두 제거합니다. 그는 그냥 문자열을 정상화하고 싶어. – Svend

+10

내가 찾고 있었던 것은 (심지어 질문이 아니었지만) – Sevenearths

+0

나도이 특별한 해결책을 찾고 있었다. :) – swl1020

3

$str=preg_replace('/[\s]+/',' ',$str);

+1

다른 답을 읽는 데 방해가되지 않았습니까? – TechNyquist

17

$str = trim(preg_replace('/\s+/',' ', $str));

여분 공간뿐만 아니라, 선행 및 후행 공백을 제거 위의 코드.

0

Sandip의 대답을 확장하려면 bit.ly로 잘못 코딩 된 로그에 문자열 묶음이 나타났습니다. 그들은 단지 URL을 코딩하는 것을 의미했지만 트위터 핸들과 다른 것들을 공백 뒤에 두었다. 그것은 그 문제 would't,하지만 난 SQL 주입 시도를 많이 받고 있어요,이

? productID =26%20via%[email protected] 

일반적으로처럼 보였다, 그래서 내가 사용하는 (404)에 유효한 ID가 아닌 것은 리디렉션 preg_replace 메소드를 사용하여 유효하지 않은 productID 문자열을 유효한 productID로 만드십시오.

$productID=preg_replace('/[\s]+.*/','',$productID); 

URL의 공백을 찾은 다음 모든 항목을 제거합니다. 다른 예

12

아무도 나를 위해 일한, 그래서 나는이 하나를 사용했습니다 :

trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

이 간단한 한 공간으로 모든 탭, 새 라인, 이중 공간 등을 대체합니다."this string have lots of space . " 그리고 당신은 대답이 "this string have lots of space", 당신은 다음과 같은 솔루션을 사용할 수있을 것으로 예상 :

$strng = "this string      have lots of      space . "; 

$strng = trim(preg_replace('/\s+/',' ', $strng)); 

echo $strng; 
6

당신은 예를 들어, 문자열 만 여러 공백을 바꾸려면

원래의 문자열과 원하는 문자열.
관련 문제