Нужна помощь с помощью взрыва, preg_match

У меня есть более тысячи отзывов в строке. Меня попросили посмотреть, могу ли я получить среднюю ставку от каждого автора. Пример строки приведен ниже. Я выделил содержимое, которое мне нужно извлечь в массив.

Империя Буша Пастуха (Times p54 — 4 * Дэвид Синклер) Медведь гризли — Змеиные сессии, Гайд-парк, Лондон (Независимая газета, стр. 17 — 4 * Элиза Брей) Blondie — Kenwood House (вс p69 — 4 * JJДжефф Твиди — Юнион Чапел, Лондон (Независимая газета, стр. 17 — 4 * Энджоли ЛистонТони Беннетт — Альберт Холл, Лондон (Times p68 — 4 * Клайв Дэвис, Стандарт р40 — 5 * Джек Массарик

Есть ли в любом случае взорвать строку на * вернуться на один символ и перейти к словам.

Я знаю, что будут шансы, но они могут быть удалены позже. есть ли способ использования preg_split или же explode?

0

Решение

найдите одно число, за которым следует звездочка, затем два слова, разделенные пробелом

preg_match_all("/\d\* ?\w* ?\w*/", $input_lines, $output_array);

и вот пример ссылки http://www.phpliveregex.com/p/7Ty

ваш выходной массив будет выглядеть так

Array
(
[0] => Array
(
[0] => 4* David Sinclair
[1] => 4* Elisa Bray
[2] => 4* JJ
[3] => 4* Enjoli Liston
[4] => 4* Clive Davis
[5] => 5* Jack Massarick
)

)

РЕДАКТИРОВАТЬ::
для добавления необязательного десятичного знака используйте это /\d(\.\d{1,2})?\* ?\w* ?\w*/

0

Другие решения

Вы можете использовать регулярные выражения что-то вроде:

([0-9]+) *\* *([^\)]+)

Должен сделать свое дело.

Это ищет 1 или более цифр, (сохраняя их), затем ноль или более отброшенных пробелов, литерал *за которым следует любое количество пропущенных пробелов, за которым следует любое количество любых символов, кроме буквального )спасая их.

0

По вопросам рекламы [email protected]