2009-10-29 10 views
85

Chcę usunąć przecinek z końca łańcucha. Ponieważ obecnie używam tego obiektu, to tylko usuwa ostatni znak ciągu. Dodaję ciąg dynamicznie, więc czasami nie ma przecinka na końcu łańcucha. W jaki sposób mogę mieć PHP usunąć przecinek z końca łańcucha, jeśli jest na końcu?Jak usunąć przecinek z końca łańcucha?

Odpowiedz

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

Docs for rtrim here

+25

Spowoduje to usunięcie wielu przecinków: "a, b ,,," stanie się "a, b".Niezależnie od tego, czego chce OP, czy nie, nie wiem ... – Greg

+0

idealnie, dziękuję! – zeckdude

+1

Dziękuję, robiłem to z substr, strlen ... całe moje życie – Farhad

2

spojrzeć na RTRIM funkcji

rtrim ($string , ","); 

powyższa linia usunie char jeśli ostatni znak jest przecinek

0

proste wyrażenie regularne będzie działać

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

Deweloper używa wyrażeń regularnych, aby rozwiązać problem, a teraz ma dwa problemy. – Sigurd

1

RTRIM ($ string, ""); to najprostszy sposób.

9

Chyba masz złączenie coś w pętli, jak

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

znacznie lepiej jest zebranie elementów w tablicy, a następnie dołączyć go z separatora trzeba

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

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

Rozwiązuje problemy z końcowymi i podwójnymi ogranicznikami, które zwykle występują podczas konkatenacji

+0

Dobra sugestia. Jednak nie wszystkie konkatenacje mogą mieć miejsce w PHP. W moim przypadku wysyłam ciąg połączony z Javascriptem dla PHP, aby go rozwikłać. – Sablefoste

34

Jest to klasyczne pytanie z dwoma rozwiązaniami. Jeśli chcesz usunąć dokładnie jeden przecinek, które mogą lub nie mogą być tam, zastosowanie:

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

Jeśli chcesz usunąć wszystkie przecinki od końca linii skorzystać z prostszego:

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

RTRIM function (i odpowiadający ltrim na lewą tapicerką) jest bardzo przydatny, jak można określić zakres znaków do usunięcia, czyli usunąć przecinki i spacje końcowe byłoby napisać:

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

Dziękuję za to szczegółowe wyjaśnienie. To wyjaśnia rzeczy! – zeckdude

0

miałem brzydkie „invisi ble”przestrzeń na końcu mojego sznurka i musiał to zrobić

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

Ale powyżej rozwiązanie jest lepsze

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

Jeśli złączenie coś w pętli, można to zrobić w ten również:

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