Ayrıştırma için regex. Dizeleri dosyaları

1 Cevap php

Ben ayrıştırmak bir PHP Regex. Dizeleri dosyaları gerekir. Özellikle, yorumlarınızı idare edebilmek gerekiyor, boş satırlar, karakterler ve açılı ayraçlar kaçtı.

. Bir dizeleri dosya örneği:

/* string one */
"StringOne"="\"1\"";

"StringTwo"="<2>";

/* Bob Dillon */
"Bob"="Dillon";

Isteği ile, istenen çıkış gibi bir şey olurdu:

Array ([StringOne] => "\" 1 \ "" [StringTwo] => "<2>" [Bob] => "Dillon")

Tüm yardım büyük beğeni topluyor!

1 Cevap

Bu?

    $r = '
    /* string one */
    "StringOne"="first \"string\"";

    "StringTwo"="2";

    /* Bob Dillon */
    "Bob"="Dillon";
    ';

    preg_match_all('~^\s*"((?:\\\\.|[^"])*)"[^"]+"((?:\\\\.|[^"])*)"~m', 
         $r, $matches, PREG_SET_ORDER);
    $parsed = array();
    foreach($matches as $m)
       $parsed[$m[1]] = $m[2];

    print_r($parsed);

baskılar

Array ( 
[StringOne] => first "string"
[StringTwo] => 2 
[Bob] => Dillon 
)