J'ai une entrée où un utilisateur peut taper plusieurs mots, et on leur dit de le séparer par un espace. Donc, l'entrée peut ressembler à ceci:
foo
ou comme ceci:
foo bar php js
Comment puis-je vérifier les espaces, et s'il y a des espaces, diviser les mots, puis tout mettre dans un tableau? Je vais parcourir ce tableau dans mon programme. Je suis juste nouveau au traitement des cordes comme celui-ci.
Voir explode
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
Oui exploser fera tout pour vous et foreach peut être utilisé pour récupérer les valeurs du tableau à nouveau. Votre code complet ressemblera au suivant:
$str = "foo bar php js";
$arr = explode(" ", $str);
//print all the value which are in the array
foreach($arr as $v){
echo $v;
}
J'espère que ceci vous aidera.
Daniel a déjà posté à propos de la division, permettez-moi d'ajouter la vérification de l'espace.
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza = trim($pizza);
if(strpos($pizza, " ") !== false)
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
}else{
echo $pizza;
}
Cela fonctionnera s'il n'y a pas d'espace entre la chaîne d'entrée .`
$pieces = explode(" ", $pizza);
if(count($pieces > 1)) {
foreach($pieces as $piece) {
echo $piece;
}
}
else {
echo $userInput;
}
?>`
Explication:
Après avoir éclaté la ficelle en morceaux. Premièrement, il vérifie si nous avons plus d'éléments dans le tableau, c'est-à-dire $ pièces si oui, il imprimera via foreach loop sinon, il imprimera simplement l'entrée utilisateur.
Cela pourrait aussi fonctionner, c'est presque la même chose que l'une des réponses déjà données.
$string = "my house is Nice";
//here the delimiter is " "
$array = explode(" ", $string);
//this will print all the array out
foreach($array as $v){
echo $v;
}
Comme Daniel l'a dit, explode()
est parfait pour ce genre de situation. Vous voudrez peut-être aussi regarder preg_split()
(uniquement à titre de référence), car il accepte une expression régulière plutôt qu'un simple délimiteur et vous permettra de diviser les entrées selon un modèle plus complexe.
À des fins d'optimisation, je pense qu'il est préférable de supprimer les espaces en excès, comme les doubles, avant d'utiliser la fonction d'exploser. Par exemple: si vous avez "foo bar php js "
, cette chaîne doit devenir "foo bar php js"
avant d'utiliser la fonction éclatée. vous pouvez essayer ce code:
$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet);
$charSet = rtrim($charSet);
$charSetArray = explode(" ", $charSet);
echo $charSetArray[0];
echo $charSetArray[1];