Выражение Regex не будет работать с preg_match_all - PullRequest
0 голосов
/ 08 января 2012

У меня есть эти данные:

49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|CABELAS|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-250 SUPER DUTY PICKUP|FX4|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-250 SUPER DUTY PICKUP|FX4|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|HARLEY-DAVIDSON EDITION|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|KING RANCH|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-250 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-250 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-250 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-250 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-250 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-250 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-250 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|CABELAS|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-350 SUPER DUTY PICKUP|FX4|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-350 SUPER DUTY PICKUP|FX4|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|HARLEY-DAVIDSON EDITION|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|KING RANCH|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-350 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-350 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|LARIAT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-350 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-350 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|XL|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2008|FORD|F-350 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2009|FORD|F-350 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed
49780|Truck|2010|FORD|F-350 SUPER DUTY PICKUP|XLT|6.4L DIESEL V8|||Crew Cab w/81.8 in./6 ft. 9.8 in. Bed|Extended Cab w/81.8 in./6 ft. 9.8 in. Bed

Я написал это регулярное выражение, используя RegExr. Он захватывает 5-й столбец (разделенный |), если строка соответствует:

.*\|.*\|2010\|ford\|(.*)\|.*\|.*\|.*\|.*\|.*\|.*

Когда я запускаю preg_match_all, я получаю эту ошибку:

preg_match_all() [<a href='function.preg-match-all'>function.preg-match-all</a>]: Unknown modifier '*'

1 Ответ

3 голосов
/ 08 января 2012

Убедитесь, что вы используете разделители , и похоже, что вы хотите регистр без учета регистра:

$matches = array();
preg_match_all('/.*\|.*\|2010\|ford\|(.*)\|.*\|.*\|.*\|.*\|.*\|.*/i', $subject, $matches);
...