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 слова.
Есть ли способ сделать это быстро?
Спасибо.
- http://stackoverflow.com/question ...
Ответ #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]
Ответ #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
Ответ на вопрос: 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]);
Ответ #4
Ответ на вопрос: php explode: разделить строку на слова, используя пробел в качестве разделителя
$financialYear = 2015-2016;
$test = explode('-',$financialYear); echo $test[0]; // 2015 echo $test[1]; // 2016
9X_php-frameworks
- Это не похоже на вопрос! и опаздывает на Г ...
-
1
-
5
-
8
-
7
-
7
-
7
-
3
-
7
-
13
-
3
-
2
-
4
-
2
-
3
-
5
-
3
-
2
-
10
-
6
-
2
-
4
-
7
-
1
-
7
-
8
-
2
-
4
-
9
-
3
-
3
-
3
-
4
-
2
-
3
-
3
-
4
-
5
-
5
-
4
-
3
-
2
-
2
-
4
-
5
-
3
-
2
-
1
-
6
-
6
-
4