Разделение строки в PHP с каждым пробелом - PullRequest
23 голосов
/ 16 февраля 2011

У меня есть ввод, в котором пользователь может вводить несколько слов, и ему говорят отделить его пробелом.Таким образом, ввод может выглядеть следующим образом:

foo

или примерно так:

foo bar php js

Как я могу проверить пробелы, и если есть пробелы, разделить слова, затем сложитьв массив?Я переберу этот массив в моей программе.Я просто новичок в обработке строк, как это.

Ответы [ 7 ]

70 голосов
/ 16 февраля 2011

См. explode

// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
9 голосов
/ 16 февраля 2011

Да взорваться сделает все за вас, а foreach можно использовать для повторного получения значений из массива. Ваш полный код будет примерно таким:

$str = "foo bar php js";
$arr =  explode(" ", $str);

//print all the value which are in the array
foreach($arr as $v){
    echo $v;
}

Надеюсь, это поможет вам.

2 голосов
/ 16 февраля 2011

Даниэль уже написал о разделительной части, позвольте мне также добавить проверку для части пробела.

$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;

}
0 голосов
/ 30 января 2019

Это будет работать, если между входной строкой нет пробела.

    $pieces = explode(" ", $pizza);
    if(count($pieces > 1)) {
        foreach($pieces as $piece) {
            echo $piece;
        }
    }
    else {
        echo $userInput;
    }
?>`

Объяснение:
После взрыва струны на куски. Во-первых, он проверяет, есть ли у нас больше элементов в массиве, т. Е. $ штук , если да, он печатает через цикл foreach , в противном случае он просто печатает ввод пользователя.

0 голосов
/ 16 января 2019

Это также может сработать, это почти так же, как один из ответов, данных уже.

$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;
}
0 голосов
/ 06 сентября 2016

В целях оптимизации, я думаю, лучше удалить лишние пробелы, такие как двойные пробелы, перед использованием функции разнесения например: если у вас есть "foo bar php js " эта строка должна стать "foo bar php js" перед использованием функции разнесения. Вы можете попробовать этот код:

$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet);
$charSet = rtrim($charSet);
$charSetArray = explode(" ", $charSet);
echo $charSetArray[0];
echo $charSetArray[1];
0 голосов
/ 16 февраля 2011

Как сказал Даниил, explode() идеально подходит для такой ситуации.Вы также можете захотеть взглянуть на preg_split() (исключительно для дальнейшего использования), поскольку он принимает регулярное выражение, а не просто разделитель, и позволит вам разбить ввод на более сложный шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...