2015-01-27 5 views
1

문자열에서 공백을 제거하려고하지만 문자열의 시작과 끝에서만 제거하려고합니다. Everythink 잘 작동하지만 데이터베이스에 문자열을 삽입 한 후에는 공백이 없지만 같은 위치에 " "가 있습니다. 나는 또한 않는 str_replace 트림과 같은 문제를 tryied 한문자열 PHP에서 공백을 제거하고 데이터베이스에 삽입하십시오.

$synonimy = $_POST['fsynoms']; 
$synonimyPodzielone = explode(',', $synonimy); 
for($k=0; $k < count($synonimyPodzielone); $k++) 
{ 
    for($m=0; $m<strlen($synonimyPodzielone[$k]);$m++) 
    { 

     if($synonimyPodzielone[$k][$m]==" ") 
     { 
      $synonimyPodzielone[$k][$m]=""; 
     } 
     else 
     { 
      break; 
     } 
    } 
} 

:

여기 내 코드입니다.

어떻게 할 수 있습니까?

+2

PHP 트림 기능을 사용 하시겠습니까? – Martin

+0

type 타입 인코딩 문제처럼 보입니다. – Pogrindis

+0

그렇습니다. 공백을 제거하기 전에 가능합니다. 완벽하게 작동합니다. – krystian

답변

1

당신이 찾고있는 것은 trim입니다. array_map의 도움으로 for 루프를 건너 뛸 수도 있습니다.

$input = " foo , bar , baz , qux "; 
$words = explode(",", $input); 
$wordsTrimmed = array_map("trim", $words); 
$csvString = implode(",", $wordsTrimmed); 

echo $csvString; // foo,bar,baz,qux 

당신은 물론 깔끔한 그것을 만들 수 있습니다 : strtr를 사용

function trimWords($string, $glue = ",") { 
    return implode($glue, array_map("trim", explode($glue, $string))); 
} 

$input = " foo , bar , baz , qux "; 
$csvString = trimWords($input); 

echo $csvString; // foo,bar,baz,qux 
+0

네, 그렇지만 무엇이 있다면 $ input = "foo, bar two, baz, qux" 그리고 나는 단어 "bar two"를 유지하고 싶지 않다 no bartwo – krystian

+0

@krystian 트림은 앞과 뒤 공백 –

+1

감사합니다 이제 perfekt 작동합니다. – krystian

1

trim($str) 함수 (http://php.net/manual/en/function.trim.php)는 잘못 사용하는 것이 어렵습니다. 반환 값을 저장하지 않았습니까? (PHP의 trim 함수는 인수를 수정하지 않고 대신 공백을 제거한 새로운 문자열을 반환합니다).

$synonimy = $_POST['fsynoms']; 
$synonimy = trim($synonimy); 

insert_into_database($synonimy); 
+0

예. 문자열에 배열이있는 경우 : $ tab = [ 'word1', 'word2', word-part1 word-part2 ']; 나는 word-part1과 word-part2 사이에 word 앞에 그리고 no 뒤에 공백을 제거하고 싶다; – krystian

1

PHP 트림 : http://php.net/manual/en/function.trim.php을 사용하면 훨씬 쉽게 생활 할 수 있습니다.

for($m=0; $m<strlen($synonimyPodzielone[$k]);$m++) 
{ 
    $synonimyPodzielone[$k][$m] = trim($synonimyPodzielone[$k][$m]);  
} 
+0

예 나는 그것을 tryied하고 작동하지만 공백 대신 데이터베이스에 삽입 문자열 후 " "입니다. 예 저는 단어를 넣으려고합니다.여보세요,하지만 Hello 앞에는 두 개의 공백이 있습니다. 나는 그것을 지우고 자르기를 원합니다. 그 후 – krystian

0

심지어 더 간단합니다.

$synonimy = trim($_POST['fsynoms']); 
insert_into_database($synonimy); 
0

가능 (빠른)도 :

$synonimy = trim($_POST['fsynoms']); 
$synonimy = strtr($synonimy, array(' ,' => ',', ', '=>',')); 

참고 : 문자열 중복 공백이 포함 된 경우 당신이 원하는 제거 할 수 있습니다.이 경우 다음을 사용할 수 있습니다.

$synonimy = preg_replace('~\s*(,)\s*|\A\s+|\s+\z~u', '$1', $_POST['fsynoms']); 

은 유니 코드 문자열을 처리합니다.

관련 문제