5

I have a text string in the following format

$str= "word1 word2 word3 word4 ";

So I want to separate each word from the string. Two words are separated by a blank space How do I do that? Is there any built-in function to do that?

Dharman
  • 30,962
  • 25
  • 85
  • 135
user177785
  • 2,249
  • 6
  • 22
  • 16

4 Answers4

13

The easiest would be to use explode:

$words = explode(' ', $str);

But that does only accept fixed separators. split an preg_split do accept regular expressions so that your words can be separated by multiple spaces:

$words = split('\s+', $str);
// or
$words = preg_split('/\s+/', $str);

Now you can additionally remove leading and trailing spaces with trim:

$words = preg_split('/\s+/', trim($str));
Gumbo
  • 643,351
  • 109
  • 780
  • 844
5
$words = explode( ' ', $str );

See: http://www.php.net/explode

Rob
  • 47,999
  • 5
  • 74
  • 91
1

http://php.net/explode

edit: damn, Rob was faster

TBH
  • 451
  • 2
  • 9
0

Pay careful attention to the fact that the OP's sample input has a trailing space on all words. So, not only are the words separated by spaces, there is also a trailing space.

To overcome this with a single, non-regex function call, use str_word_count() with a character mask to allow the inclusion of numbers as part of valud words.

Code: (Demo)

$str = "word1 word2 word3 word4 ";

var_export(str_word_count($str, 1, '0..9'));

Output:

array (
  0 => 'word1',
  1 => 'word2',
  2 => 'word3',
  3 => 'word4',
)
mickmackusa
  • 43,625
  • 12
  • 83
  • 136