php kullanarak bir metin dosyasından çoklu alanları ayıklanması

3 Cevap php

php kullanarak bir metin dosyasından çoklu (~ 40 değerleri) ayıklanması en iyi yolu nedir?

veri daha fazla veya daha az gibi:

NAMEA                   valuea
NAMEB                   valueb

I hepsi için (tüm 40) regexs belirtmeniz gerekir çünkü ben, bir veri yapısı içine bu verileri ayıklamak için uygun bir yaklaşım * arıyorum.

i Anlatabildim mi?

* Yapmamı için anlamı, varsayılan / ağrılı bir yöntem olacaktır:

$namea = extractfunction("regexa", $textfilevalue);
$nameb = extractfunction("regeb", $textfilevalue);

... 40 kez!


Çizgiler aynı sırada olabilir, ya da her bir dosya içinde mevcut olmayabilir. "Kayıt Numarası:" veya "Başvuru Adı:" (yani, ben NAMEA olarak çağırıyordu ne boşluklu) Her NAMEA gibi metin


Col Yanıt

Ben bu yüzden onun, okunabilir değiştirilebilir, bir nesne / dizi vb .., kolayca çağrılabilir şu kurar, benim kod yazma mantıklı bir "yol" için arıyorum "İyi bir kodlama tarzı!" :)


@ Adam - Onlar aslında yapmak ... ve de eğik çizgi içerir ...


@ Alix - muhteşem adam Freaking! Bu iyi oldu! Ayrıca ben "key_x" ve ötesinde her şeyi kaldırarak rsultant dizisi "kesecek" konusunda herhangi bir anlayış var olur? Ben yeni bir soru olarak açmalı mıyız?

3 Cevap

bildiğim kadarıyla almak gibi bir dize dizisini almak için () dosyası kullanmak ve daha sonra bazı işleçleri ile bu dizeleri ayrıştırmak.

Eğer adları ve değerleri arasında bir = işareti eklerseniz, her şey bir anda kullanarak parse_ini_file() almak ble olacak

Bunları boşluklar asla anahtarlarınızı (namea, nameb) varsayarsak:

$contents = file('some_file.txt'); // read file as array
$data = array();
foreach($contents as $line) { // iterate over file
    preg_match('/^([^\s]+)\s+(.*)/', $line, $matches); // pull out key and value into $matches

    $key = $matches[1];
    $value = $matches[2];

    $data[$key] = $value; // store key/value pairs in $data array
}

var_dump($data); // what did we get?