[英]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示例對其進行解析:
由於它仍然卡在我的腦海中...我的處理方式是開始處理每種情況,並查看是否還有任何剩余的調整/影響。 似乎使這個棘手的問題是唯一可靠的限定符是“字段”,如果有人在描述中使用它,它將被破壞。 我只需要取文件並開始迭代。
使用此正則表達式拆分它至少是分割標頭和數據的一個很好的起點。 基本上,字段加上其他可選文本,包括在結束之前添加“描述”和“第四”的可能性:
字段[^:] {0,12}:
之后,對於案例2,您至少必須刪除尾隨/,對於案例5,您必須去除'-',如果您不希望案例1的數據中包含多余的換行符。
RegEXP在某些情況下很難維護。 嘗試編寫一個簡單的有限狀態機
經過多次/反復試驗后,我將它們讀入數組並解析出每一行文本。 這很長,一團糟,但應該完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.