Od tego są wyrażenia regularne.
function split_by_words($str, $pattern = '/[\s]+/')
{
$temp = preg_split($pattern, $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$spaces = array();
$words = array_reduce( $temp, function( &$result, $item) use ( &$spaces)
{
if( strlen( trim( $item)) === 0)
{
$spaces[] = strlen( $item);
}
else
{
$result[] = $item;
}
return $result;
}, array());
return $words;
}
$str = 'Lorem ipsum"dolor sit amet,consectetur;adipiscing elit.';
$pattern = '/[\s\"\,\.\;]+/';
$words = split_by_words($str, $pattern);
print_r($words);
Dzieli nie tylko po spacji ale i po znakach: " , . ;
Domyślnie funkcja dzieli po spacjach.