PHP, каков наилучший подход для разделения этих значений? - PullRequest
0 голосов
/ 15 февраля 2010

Мне тяжело с этим, потому что я не думаю, что знаю все свои варианты.

Мне нужно проанализировать текстовое поле произвольной формы, которое мне нужно для сопоставления значений с базой данных.

Вот пример текста, ПРИМЕЧАНИЕ: не все поля должны быть там, не все разделители одинаковы, и не все дескрипторы доступны. Мне нужно проверить, является ли значение только числовым или буквенно-цифровым.

Пример 1

field1: 999-999234-24-2 

field2 Description: a short description 

field3: 3.222.1 

asdfg 

field number four: NO 

field5:

Пример 2

field1: 999-999234-24-2/field2 Description: a short description/field3: 3.222.1 asdfg/field number four: NO/field5:

Пример 3

999-999234-24-2 

Пример 4

field1: 999-999234-24-2 field2 Description: a short description field3: 3.222.1 asdfg field number four: NO field5:

Пример 5

field1: 999-999234-24-2 - field2 Description: a short description - field3: 3.222.1 asdfg - field number four: NO - field5: 

Я хотел бы, чтобы все поля X были в собственном столбце. ПРИМЕЧАНИЕ. Все данные в примере приведены в одинаковом порядке, а данные в реальном времени - нет.

Теперь я не возражаю делать это поэтапно, если мне нужно, но с трудом разбираю значения в столбцы. есть предложения?

Я думал о какой-то функции case с RegEx, но пока не повезло.

Ответы [ 4 ]

0 голосов
/ 19 февраля 2010

после долгих проб и ошибок я собираюсь прочитать их в массив и разобрать каждую строку текста. Это долго и будет беспорядок, но должно закончить работу.

0 голосов
/ 15 февраля 2010

Так как он все еще застрял в моей голове ... я бы начал с каждого из этих случаев и посмотрел, есть ли какие-нибудь изменения / выпадения. То, что кажется хитрым, это единственный надежный разделитель - «поле», и если кто-то использует это в описании, оно сломается. Мне просто нужно взять файл и начать итерацию.

Разделение его с помощью этого регулярного выражения будет, по крайней мере, хорошей отправной точкой для разделения заголовков и данных. В основном, поле плюс дополнительный необязательный текст, который охватывает возможность добавления «Описание» и «номер четыре» перед закрытием:

поле [^:] {} 0,12

После этого вам, по крайней мере, придется убрать конечный / для случая # 2, '-' для случая # 5, дополнительные разрывы строк, если вы не хотите, чтобы они были в данных для случая # 1.

0 голосов
/ 15 февраля 2010

RegEXP будет трудно поддерживать в некоторых крайних случаях. Попробуйте написать простой конечный автомат

0 голосов
/ 15 февраля 2010

Возможно, вам следует стандартизировать формат java .properties , а затем использовать этот пример PHP для его анализа:

http://www.innerweaver.com/?p=13

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...