Daha sonra "yararlı" preg_split
ile parçaları, ve, implode
{[(4)] içine splitting the string başlayabilirsiniz }:
$str_in = "dog, cat ,car,tea pot,, ,,, ;;
fly, cake";
$parts = preg_split('/[,;\s]/', $str_in, -1, PREG_SPLIT_NO_EMPTY);
$str_out = implode(',', $parts);
var_dump($parts, $str_out);
(Here, the regex will split on ',
',' ;
've' \s
', herhangi bir boşluk karakteri anlamına gelir - ve biz sadece) boş olmayan parçaları tutmak em>
Için, alacak $parts
:
array
0 => string 'dog' (length=3)
1 => string 'cat' (length=3)
2 => string 'car' (length=3)
3 => string 'tea' (length=3)
4 => string 'pot' (length=3)
5 => string 'fly' (length=3)
6 => string 'cake' (length=4)
Ve için $str_out
,
string 'dog,cat,car,tea,pot,fly,cake' (length=28)
Edit after the comment : Üzgünüm, ben bir fark etmedi ^ ^
Herhalde ([{kullanarak, ',
' veya ';
', parçalar üzerinde yineleme tarafından bölünmüş olurdu :-( Bu durumda, beyaz boşluk ile bölemezsiniz 2)]} her öğenin başında ve sonunda beyaz-karakterleri kaldırmak ve sadece boş olmadığını bu tutmak için:
$useful_parts = array();
$parts = preg_split('/[,;]/', $str_in, -1, PREG_SPLIT_NO_EMPTY);
foreach ($parts as $part) {
$part = trim($part);
if (!empty($part)) {
$useful_parts[] = $part;
}
}
var_dump($useful_parts);
Executing this portion of code gets me :
array
0 => string 'dog' (length=3)
1 => string 'cat' (length=3)
2 => string 'car' (length=3)
3 => string 'tea pot' (length=7)
4 => string 'fly' (length=3)
5 => string 'cake' (length=4)
And imploding all together, I get, this time :
string 'dog,cat,car,tea pot,fly,cake' (length=28)
Hangisi daha iyidir ;-)