Возникли проблемы с регулярными выражениями с preg_split в PHP - PullRequest
1 голос
/ 12 сентября 2010

У меня есть следующие данные:

несколько слов - еще 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);

1 Ответ

2 голосов
/ 12 сентября 2010

Используйте одинарные кавычки.Я не могу подчеркнуть это достаточно.Также $ является метасимволом конца строки.Я сомневаюсь, что вы хотите это при разделении.

Возможно, вы захотите использовать что-то более похожее на 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"
  }
}

Думаете, вы можете извлечь нужную информацию из этой структуры?

...