문자열 끝에서 쉼표를 제거하려면 어떻게합니까?


119

문자열 끝에서 쉼표를 제거하고 싶습니다. 지금 그대로 사용하고 있습니다

$string = substr($string,0,-1);

그러나 그것은 문자열의 마지막 문자 만 제거합니다. 문자열을 동적으로 추가하고 있으므로 문자열 끝에 쉼표가없는 경우도 있습니다. 문자열 끝에 쉼표가 있으면 PHP가 문자열 끝에서 쉼표를 제거하도록하려면 어떻게해야합니까?

답변:


303
$string = rtrim($string, ',');

rtrim여기에 대한 문서


27
이렇게하면 여러 쉼표가 제거됩니다. "a, b ,,,"는 "a, b"가됩니다. 영업 이익이 원하는 무엇 아닌지 모르겠어요 여부 ...
그렉

1
나는 나 strlen, SUBSTR과 함께이 일을했다, 감사합니다 ... 내 인생
여보

38

이것은 두 가지 해결책이있는 고전적인 질문입니다. 정확히 하나의 쉼표를 제거하려면 다음을 사용하십시오.

if (substr($string, -1, 1) == ',')
{
  $string = substr($string, 0, -1);
}

줄 끝에서 모든 쉼표를 제거하려면 더 간단한 방법을 사용하십시오.

$string = rtrim($string, ',');

rtrim 함수 (및 왼쪽 트림에 해당하는 ltrim)는 제거 할 문자 범위를 지정할 수 있으므로 매우 유용합니다. 즉, 쉼표와 후행 공백을 제거하려면 다음과 같이 작성합니다.

$string = rtrim($string, ", \t\n");

자세한 설명에 감사드립니다. 그것은 일을 명확하게합니다!
zeckdude

12

나는 당신이 루프에서 무언가를 연결하고 있다고 생각합니다.

foreach($a as $b)
  $string .= $b . ',';

항목을 배열로 수집 한 다음 필요한 구분 기호와 결합하는 것이 훨씬 좋습니다.

foreach($a as $b)
  $result[] = $b;

$result = implode(',', $result);

이것은 일반적으로 연결에서 발생하는 후행 및 이중 구분 기호 문제를 해결합니다.


좋은 제안입니다. 그러나 모든 연결이 PHP에서 발생하는 것은 아닙니다. 제 경우에는 PHP를 풀기 위해 Javascript 연결 문자열을 보내고 있습니다.
Sablefoste

4

루프에서 무언가를 연결하는 경우 다음과 같이 할 수도 있습니다.

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}

2

rtrim 기능 살펴보기

rtrim ($string , ",");

위의 줄은 마지막 문자가 쉼표 인 경우 문자를 제거합니다.



1

간단한 정규 표현식이 작동합니다.

$string = preg_replace("/,$/", "", $string)

2
개발자는 정규 표현식을 사용하여 문제를 해결했으며 이제 두 가지 문제가 있습니다.
Sigurd

1

rtrim ($ string, ","); 가장 쉬운 방법입니다.


1

문자열 끝에 성가신 "보이지 않는"공간이있어서이 작업을 수행해야했습니다.

 $update_sql=rtrim(trim($update_sql),',');

그러나 위의 솔루션이 더 좋습니다

 $update_sql=rtrim($update_sql,', ');

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.