PHP bu değerleri bölmek için en iyi yaklaşım nedir?

4 Cevap php

Benim tüm seçenekleri biliyorum sanmıyorum bu bir zorlanıyorum.

Ben bir veritabanına değerleri eşleştirmek için gereken ücretsiz bir form metin alanını ayrıştırmak zorunda.

İşte bazı örnek metin NOT: tüm alanlar tüm sınırlayıcıları aynıdır ve tüm tanımlayıcıları vardır, orada olmak zorunda. Ben değeri yalnızca sayısal ya da alfa sayısal olup olmadığını kontrol etmek gerekir.

Example 1

field1: 999-999234-24-2 

field2 Description: a short description 

field3: 3.222.1 

asdfg 

field number four: NO 

field5:

Example 2

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

Example 3

999-999234-24-2 

Example 4

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

Example 5

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

Ne istiyorum tüm alanları X orada kendi sütununda olmaktır. Örnek veriler tüm aynı sırayla ama canlı veri değil NOT.

Ben ama sadece sütunlara değerleri ayrıştırma zorlanıyorum gerekiyorsa Şimdi adımda bu yaptığını umursamıyorum. herhangi bir öneriniz?

Ben bugüne kadar şans değil RegEx'in olgu fonksiyonu çeşit düşünüyordum ama oldu.

4 Cevap

sonra çok olsa / deneme ve hata ben bir diziye bunları okumak ve metnin her satırı ayrıştırmak için gidiyorum. Uzun ve bir karmaşa olacak ama işi olmalıdır.

Belki o zaman ayrıştırmak için bu PHP örneği kullanabilirsiniz java .properties formatı üzerinde standardize edilmelidir:

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

Hala kafamın içinde sıkışmış beri ... Ben bu konuda gitmek istiyorum yolu bu vakaların her işleme başlar ve kalan tweaks / serpinti olup olmadığını görmek olduğunu. Bu zor yapmak için görünen tek güvenilir deliminator 'tarla' olduğunu, ve herkes bir açıklama kırmak edeceğiz kullanır. Ben sadece dosya alabilir ve iterating başlatmak gerekiyor.

Bu regex ile bölme azından başlıkları ve veri bölünmesi için iyi bir başlangıç ​​noktası olacaktır. Temelde, alan artı 'Açıklama' ve 'sayısı dört' ihtimalini kapsayan isteğe bağlı ek metin kapatmadan önce eklendi:

alan [^:] {0,12}:

Bundan sonra, en az vaka # 2 / sondaki şerit olurdu, '-' case # 5, sen case # 1 için veri bunları istemiyorsanız ekstra linebreaks.

Regexp bazı kenar-durumlarda korumak zor olurdu. Basit bir sonlu durum makinesi yazmayı deneyin