2016-08-10 2 views
3

nehme an, der Wert istKomma aus Zeichenfolge in php

1,2,,4,5,6 - Dazu i str_replace(",,",",",$mystring) verwenden können, um zu bekommen 1,2,4,5,6

Wie kommt man Werte wie 2,4,5,6 von ,2,,4,5,6, wo zwei oder mehr aufeinanderfolgende Kommata durch eine ersetzt werden einzelnes Komma und wenn Komma vor irgendeinem Wert kommt, wird es vernachlässigt. Wenn es nur Kommas wie ,,,,,, gibt, wird leerer Wert zurückgegeben.

wie dies in PHP zu tun.

+0

Versuchen Sie Folgendes: str_replace (',,', ',', 1,2,, 4,5,6); –

+0

Nur aus Neugier, woher kommt die Saite? Vielleicht ist das Problem, wie diese Zeichenfolge erstellt wird. Ist es nicht möglich, dass zwischen den Zahlen drei Kommas stehen? In diesem Fall wird nur ein Komma ersetzt und zwei Kommas stehen gelassen. –

+0

Dieser durch Komma getrennte Wert stammt aus Eingabefeldern mit gleichem Namen. Ich speichere ihre Werte mit Kommas.wenn irgendeine Eingabe leer ist, dann hat die Zeichenfolge einen leeren Platz, gefolgt von einem Komma wieder.so immer wenn ich diese Werte vorfüllen muss, führe ich einfach die Schleife aus .In Vorschau muss ich nur den tatsächlichen Wert anzeigen. –

Antwort

3

Sie können explode die Zeichenfolge zuerst durch Komma und dann implode nach dem Filtern der leeren Zeichenfolgen.

$val=",2,,4,5,6"; 
$parts=explode(",",$val); 
$parts=array_filter($parts); 
echo(implode(",",$parts)); 

Beachten Sie, dass dies auch 0 von Ihren Werten filtert. Wenn Sie die Nullen halten wollen, schlagen Sie this question

+1

Beachten Sie, dass 'array_filter' auch Nullen entfernen kann. Ich bin mir nicht sicher, ob das OP Nullen will oder nicht. –

+0

Yup, guter Punkt. Ich füge es der Antwort hinzu. @Andrew –

0
// Variable Declaration for String 
$str = "1,2,,4,5,6"; 

// Create Array Out of the String, The comma ',' is the delimiter 
// This would output 
//  [ 1 => 1, 2 => 2, 3 => '', 4 => 4, 5 => 5, 6 => 6 ] 
$explodedStr = explode(',', $str); 

// Filter Array And Remove The empty element which in this case 
// 3 => '' 
$filteredArray = array_filter($explodedStr); 

// Convert Array into String with comma delimiter 
$formattedString = implode(',', $filteredArray); 
+0

Obwohl dieser Code helfen kann, das Problem zu lösen, erklärt es nicht _why_ und/oder _how_ es beantwortet die Frage. Die Bereitstellung dieses zusätzlichen Kontexts würde seinen langfristigen Wert erheblich verbessern. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erläuterung hinzuzufügen, einschließlich der Einschränkungen und Annahmen. –

1

können Sie tun, was Sie an Ihrem ersten Problem haben ...

Dann trim() verwenden, um unnötigen Kommas an der Front oder Ende des Strings zu entfernen.

$mystring = ',2,,4,5,6'; 

$output = str_replace(',,', ',', $mystring); 

echo trim($output, ','); 

//Output will be: 2,4,5,6 
Verwandte Themen