0

テキスト文字列をスペースで区切られた単語に分割したいと考えています。私が使う

$words=explode(" ", $text);

残念ながら、この方法は私にはうまく機能しません。なぜなら、その間にいくつのスペースがあるか知りたいからです。

$text 全体をシンボルごとに調べ、whileステートメントを使用して $spaces ( $spaces=array();) に整数 (スペースの数、ほとんどの場合は 1) を入力し、テキストを $words= に読み込むよりも良い方法はありますか? array() シンボルごと?

ここに追加の説明があります。

$text="Hello_world_____123"; //symbol "_" actually means a space

必要:

$words=("Hello","world","123");
$spaces=(1,5);
4

3 に答える 3

2

代わりに正規表現を使用します。

$words = preg_split('/\s+/', $text)

編集

$spaces = array();
$results = preg_split('/[^\s]+/', $text);
foreach ($results as $result) {
  if (strlen($result) > 0) {
     $spaces [] = strlen($result);
  }
}
于 2012-04-17T18:21:49.650 に答える
1

あなたがやろうとしていることを行うには多くの方法がありますが、おそらくpreg_split()array_map( ) の組み合わせを選択するでしょう:

$text = 'Hello world     123';
$words = preg_split('/\s+/', $text, NULL, PREG_SPLIT_NO_EMPTY);
$spaces = array_map(function ($sp) {
    return strlen($sp);
}, preg_split('/\S+/', $text, NULL, PREG_SPLIT_NO_EMPTY));

var_dump($words, $spaces);

出力:

array(3) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(5) "world"
  [2]=>
  string(3) "123"
}
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(5)
}
于 2012-04-17T18:36:37.827 に答える
0

次のように、その間のスペースの数を取得できます。

$words = explode(" ", $text);
$spaces = sizeof($words)-1;

それはあなたにとってうまくいきませんか?

于 2012-04-17T18:22:39.480 に答える