Comment puis-je exploser une chaîne par un ou plusieurs espaces ou tabulations?
Exemple:
A B C D
Je veux en faire un tableau.
$parts = preg_split('/\s+/', $str);
Cela marche:
$string = 'A B C D';
$arr = preg_split('/[\s]+/', $string);
Je pense que vous voulez preg_split
:
$input = "A B C D";
$words = preg_split('/\s+/', $input);
var_dump($words);
au lieu d’exploser, essayez preg_split: http://www.php.net/manual/en/function.preg-split.php
Afin de prendre en compte espace complet tel que
full width
vous pouvez prolonger la réponse de Bens à ceci:
$searchValues = preg_split("@[\s+ ]@u", $searchString);
Sources:
(Je n'ai pas assez de réputation pour poster un commentaire, je vous l'ai donc écrit comme réponse.)
Les réponses fournies par d'autres personnes (Ben James) sont très bonnes et je les ai utilisées. Comme le fait remarquer l'utilisateur 889030, le dernier élément du tableau peut être vide. En fait, les premier et dernier éléments du tableau peuvent être vides. Le code ci-dessous aborde les deux problèmes.
# Split an input string into an array of substrings using any set
# whitespace characters
function explode_whitespace($str) {
# Split the input string into an array
$parts = preg_split('/\s+/', $str);
# Get the size of the array of substrings
$sizeParts = sizeof($parts);
# Check if the last element of the array is a zero-length string
if ($sizeParts > 0) {
$lastPart = $parts[$sizeParts-1];
if ($lastPart == '') {
array_pop($parts);
$sizeParts--;
}
# Check if the first element of the array is a zero-length string
if ($sizeParts > 0) {
$firstPart = $parts[0];
if ($firstPart == '')
array_shift($parts);
}
}
return $parts;
}