1

次の入力があります。

いくつかの単語 - 25 もう少し - 単語 - 7 別の - セットの - 単語 - 13

そして、私はこれに分割する必要があります:

[0] = "a few words"
[1] = 25

[0] = "some more - words"
[1] = 7

[0] = "another - set of - words"
[1] = 13

私は preg_split を使用しようとしていますが、常に終了番号を見逃しています。私の試み:

$item = preg_split("#\s-\s(\d{1,2})$#", $item->title);
4

1 に答える 1

2

一重引用符を使用します。私はこれを十分に強調することはできません。また$、文字列終了メタ文字です。分割するときにこれが必要だとは思いません。

preg_match_allマッチングにもっと似たものを使用したい場合があります。

$matches = array();
preg_match_all('#(.*?)\s-\s(\d{1,2})\s*#', $item->title, $matches);
var_dump($matches);

プロデュース:

array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(17) "a few words - 25 "
    [1]=>
    string(22) "some more - words - 7 "
    [2]=>
    string(29) "another - set of - words - 13"
  }
  [1]=>
  array(3) {
    [0]=>
    string(11) "a few words"
    [1]=>
    string(17) "some more - words"
    [2]=>
    string(24) "another - set of - words"
  }
  [2]=>
  array(3) {
    [0]=>
    string(2) "25"
    [1]=>
    string(1) "7"
    [2]=>
    string(2) "13"
  }
}

その構造から必要な情報を収集できると思いますか?

于 2010-09-12T04:25:01.067 に答える