簡體   English   中英

PHP拆分這些值的最佳方法是什么?

[英]PHP what is the best approach to split these values up?

我很難理解這一點,因為我認為我不知道所有的選擇。

我必須解析一個自由格式的文本字段,該字段需要將值映射到數據庫。

這是一些示例文本,注意:並非所有字段都必須存在,並非所有定界符都相同,並且並非所有描述符都可用。 我確實需要檢查該值是僅數字還是字母數字。

例子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都在其自己的列中。 注意示例數據的順序相同,但實時數據則不同。

現在,如果需要,我不介意分步執行此操作,但是很難將值解析為列。 有什么建議么?

我當時正在考慮使用RegEx進行某種大小寫功能,但到目前為止還不走運。

也許您應該對java .properties格式進行標准化,然后可以使用以下PHP示例對其進行解析:

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

由於它仍然卡在我的腦海中...我的處理方式是開始處理每種情況,並查看是否還有任何剩余的調整/影響。 似乎使這個棘手的問題是唯一可靠的限定符是“字段”,如果有人在描述中使用它,它將被破壞。 我只需要取文件並開始迭代。

使用此正則表達式拆分它至少是分割標頭和數據的一個很好的起點。 基本上,字段加上其他可選文本,包括在結束之前添加“描述”和“第四”的可能性:

字段[^:] {0,12}:

之后,對於案例2,您至少必須刪除尾隨/,對於案例5,您必須去除'-',如果您不希望案例1的數據中包含多余的換行符。

RegEXP在某些情況下很難維護。 嘗試編寫一個簡單的有限狀態機

經過多次/反復試驗后,我將它們讀入數組並解析出每一行文本。 這很長,一團糟,但應該完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM