Jak usunąć ostatni przecinek z ciągu za pomocą PHP?

96

Używam pętli do pobierania wartości z mojej bazy danych, a mój wynik jest taki:

'name', 'name2', 'name3',

I chcę tego tak:

'name', 'name2', 'name3'

Chcę usunąć przecinek po ostatniej wartości pętli.

JoJo
źródło
11
Powinieneś implodeswoje oryginalne wartości przecinkami, nie zapętlać ich i usuwać na końcu.
Moonwave99

Odpowiedzi:

217

Użyj rtrimfunkcji:

rtrim($my_string, ',');

Drugi parametr wskazuje znak do usunięcia.

Ander2
źródło
26
Upewnij się również, że po przecinku nie ma żadnej spacji na końcu, w przeciwnym razie to się nie powiedzie lub wykonaj rtrim (trim ($ my_string), ',').
Foxhoundn
Doskonała odpowiedź!
DiChrist
@Foxhoundn Twój komentarz jest zbawicielem. Dzięki bracie
Jaydeep Goswami
1
Nie działa to w pętli, która dodaje przecinek na końcu, ponieważ usuwa wszystkie przecinki.
LizardKG
25

Próbować:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');
Boaz
źródło
1
Już go wypróbowałem, ale wyświetla się tak: `` imię '' `` imię2 '' imię3 'To nie jest to, czego potrzebuję
JoJo
W swoim przykładzie musisz zastosować tę funkcję tylko do wyniku końcowego, a nie do każdej wartości osobno.
Boaz
Używam pętli, więc jak mogę poznać ostateczny wynik pętli?
JoJo
Końcowy wynik pętli jest przechowywany w zmiennej, prawda? Więc zastosuj rtrimwywołanie do tej zmiennej. Jeśli nadal masz problemy, zaktualizuj swoje pytanie kodem, który tworzy pętlę.
Boaz
Szczególnie podoba mi się ta odpowiedź, ponieważ jednym z problemów z wieloma wbudowanymi funkcjami PHP jest to, że niektóre z nich są nieważne, a niektóre mają typy zwracane. W tym przypadku starałem się po prostu pisać rtrim($string, ','), kiedy powinienem pisać$string = rtrim($string, ',');
Alec
14

Wypróbuj poniższy kod:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

Użyj tego kodu, aby usunąć ostatni znak ciągu.

VijayS91
źródło
10

Możesz użyć substrfunkcji, aby to usunąć.

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);
Annie Chandel
źródło
7

rtrim funkcjonować

rtrim($my_string,',');

Drugi parametr wskazuje, że przecinek ma zostać usunięty z prawej strony.

Jitendra Tyagi
źródło
5

posługiwać się rtrim()

rtrim($string,',');
Sankalp Mishra
źródło
4

Będzie to miało wpływ na twój skrypt, jeśli pracujesz z tekstem wielobajtowym, z którego wykonujesz podciąg. W takim przypadku gorąco polecam włączenie funkcji mb_ * w Twoim php.ini lub zrób toini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);

Ashok Khot
źródło
2

jest tak proste, jak:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');
Ketan Savaliya
źródło
2

W tym celu lepiej jest użyć implodu. Implode jest łatwy i niesamowity:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

Wynik:

    name1, name2, name3
khandaniel
źródło
Generowanie tablicy na podstawie wartości odczytywanych z bazy danych jest niepotrzebne. rtrim i substr są poprawnymi - i dobrymi - rozwiązaniami.
Steve Horvath
Cóż, masz rację, ale jeśli masz tablicę, jest to przydatne rozwiązanie
khandaniel
1

Możesz użyć jednej z poniższych technik, aby usunąć ostatni przecinek (,)

Rozwiązanie 1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

Rozwiązanie 2:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

Rozwiązanie 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Majbah Habib
źródło
0

Rozwiązania do zastosowania podczas pętli:

//1 - Using conditional:

$source = array (1,2,3);
$total = count($source);
    
$str = null;
    
for($i=0; $i <= $total; $i++){ 
        
    if($i < $total) {
        $str .= $i.',';
    }
    else {
        $str .= $i;
    }
}
    
echo $str; //0,1,2,3

//2 - Using rtrim:

$source = array (1,2,3);
$total = count($source);

$str = null;

for($i=0; $i <= $total; $i++){ 
    
        $str .= $i.',';
}

$str = substr($str,0,strlen($str)-1);
echo $str; //0,1,2,3
Fellipe Sanches
źródło