php explode: разделить строку на слова, используя пробел в качестве разделителя

$str = "This is a string"; $words = explode(" ", $str); 
Работает нормально, но пробелы по-прежнему 9X_php-fpm помещаются в массив:
$words === array ('This', 'is', 'a', '', '', '', 'string');//true 

Я бы предпочел использовать 9X_jsonarray только слова без пробелов и хранить информацию 9X_bytearray о количестве пробелов отдельно.
$words === array ('This', 'is', 'a', 'string');//true $spaces === array(1,1,4);//true 

Только что добавлено: (1, 1, 4) означает 9X_php.ini один пробел после первого слова, один пробел 9X_regular-expression после второго слова и 4 пробела после третьего 9X_bytearray слова.
Есть ли способ сделать это быстро?
Спасибо.
22
1

  • http://stackoverflow.com/question ...
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: php explode: разделить строку на слова, используя пробел в качестве разделителя

Для разделения строки на массив вы должны 9X_php5 использовать preg_split:

$string = 'This is a string'; $data = preg_split('/\s+/', $string); 

Ваша вторая часть (подсчет 9X_regular-expression пробелов):

$string = 'This is a string'; preg_match_all('/\s+/', $string, $matches); $result = array_map('strlen', $matches[0]);// [1, 1, 4] 

34
0

Ответ #2

Ответ на вопрос: php explode: разделить строку на слова, используя пробел в качестве разделителя

Вот один из способов: разделить строку и 9X_php5 запустить регулярное выражение один раз, а 9X_regexp затем проанализировать результаты, чтобы 9X_preg-match увидеть, какие сегменты были захвачены как 9X_preg-match разделенные (и, следовательно, только пробелы), или 9X_php-fpm какие из них являются словами:

$temp = preg_split('/(\s+)/', $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()); 

Вы можете 9X_regular-expression видеть from this demo, что $words:

Array ( [0] => This [1] => is [2] => a [3] => string ) 

И $spaces это:

Array ( [0] => 1 [1] => 1 [2] => 4 ) 

3
0

Ответ #3

Ответ на вопрос: php explode: разделить строку на слова, используя пробел в качестве разделителя

Вы можете использовать preg_split() для первого массива:

$str = 'This is a string'; $words = preg_split('#\s+#', $str); 

И 9X_character-arrays preg_match_all() для массива $spaces:

preg_match_all('#\s+#', $str, $m); $spaces = array_map('strlen', $m[0]); 

1
0

Ответ #4

Ответ на вопрос: php explode: разделить строку на слова, используя пробел в качестве разделителя

$financialYear = 2015-2016;

$test = explode('-',$financialYear); echo $test[0]; // 2015 echo $test[1]; // 2016 

9X_php-frameworks

1
1

  • Это не похоже на вопрос! и опаздывает на Г ...