В настоящее время я пытаюсь обработать файл csv на PHP с помощью preg_match(). Пример данных, которые я пытаюсь обработать, приведен ниже;PHP preg_match() Неизвестная ошибка
"SN120187", "Aldersr Rd Nr Магазины", "", "STHPTN", "50 56.4241N", "1 25.7587W", "1001077307", "2010-05-30 15:29: 49" , "10", "", "SURRSHLT3x32", "BSU243L1", "iiipiiipiiipiiipiii",
"HA035028", "Hursley Road - Leigh House Hospital", "", "Херсли", "50 59.6772N »,« 1 23.4412W »,« »,« »,« 24 »,« »,« »,« »,« Быстрая коричневая лиса перепрыгнула через ленивую собаку. Быстрая коричневая лиса перепрыгнула через ленивую собаку »,
У меня есть регулярное выражение, которое я пытаюсь использовать по этим данным (см. Ниже);
if(preg_match('/^"(?P<code>.+)","(?P<description>.+)","(?P<bay>.*)","(?P<area>.+)","(?P<lat>.+)","(?P<lon>.+)","(?P<build>.*)","(?P<msgTime>.*)","(?P<routes>.*)","(?P<simNo>.*)","(?P<displayType>.*)","(?P<version>.*)","(?P<comments>.*)",$/', $line, $matches)){}
Регулярное выражение работает на 95% данных, однако, данные, не работает, имеет последнее поле в CSV строке, не пусто.
Я начал обдумывать данные (в основном последнее поле) и обнаружил, что следующие данные не будут проходить через регулярное выражение;
"SN120187", "Aldersr Rd Nr Магазины", "", "STHPTN", "50 54.5512N", "1 22.9273W", "1001077307", "2010-05-30 15:29: 49" , "10", "", "SURRSHLT3x32", "BSU243L1", "iiiipiiiipiiiipiiii",
"HA035028", "Hursley Road - Leigh House Hospital", "", "Херсли", "52 58.3498N », "1 26.5421W", "", "", "24", "", "", "", "iiiipiiiipiiiipiiiipiiiipiiiipiiiipiiiipiiiipiiiipiiiipii",
Однако, если удалить один символ из последнего поля от выше данных, он пройдет. Из игры с ним я обнаружил, что для получения этой ошибки нет согласованного шаблона; верхняя длина строки не имеет значения (это показано добавлением дополнительных символов в другие поля), а также длина конечного поля тоже не имеет значения.
Я понятия не имею, что происходит. У кого-нибудь есть идеи?
В настоящее время я использую PHP версию 5.3.2, и никаких сообщений об ошибках не появляется.
просто из любопытства, почему бы вам не использовать разделение на эти данные? – ennuikiller