У меня есть вход, где пользователь может вводить несколько слов, и им предлагается разделить его пробелом. Поэтому ввод может выглядеть следующим образом:
foo
или вот так:
foo bar php js
Как я могу проверить пробелы, а если есть пробелы, разделите слова, а затем поместите их в массив? Я прокручу этот массив в моей программе. Я просто новичок в обработке строк, как это.
См. explode
// Example 1 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2
Да, взрыва будет делать все для вас, и foreach может использоваться для извлечения значений из массива снова. Ваш полный код будет выглядеть следующим образом:
$str = "foo bar php js"; $arr = explode(" ", $str); //print all the value which are in the array foreach($arr as $v){ echo $v; }
Надеюсь, что это поможет вам.
Даниэль уже опубликовал про скользкую часть, позвольте мне добавить проверку на космическую часть.
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pizaa = trim($pizza); if(strpos($pizza,' ') >= 0) { $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 }else { echo $pizza; }
Как сказал Даниэль, explode()
идеально подходит для такого рода ситуаций. Вы также можете посмотреть на preg_split()
(чисто для будущей ссылки), поскольку он принимает регулярное выражение, а не просто простой разделитель и позволит вам разбить ввод на более сложный шаблон.
Для целей оптимизации я считаю, что лучше использовать избыточные пространства, например, двойные пробелы, прежде чем использовать функцию разрыва. например: если у вас есть "foo bar php js "
эта строка должна стать "foo bar php js"
перед использованием функции explode. вы можете попробовать этот код:
$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet); $charSet = rtrim($charSet); $charSetArray = explode(" ", $charSet); echo $charSetArray[0]; echo $charSetArray[1];