PHP Yorum değişkenleri ayrıştırma için regex

2 Cevap php

Ben bu gibi bakabilirsiniz bir yorum bloğu var;

/**
 * variable1: value
 * variable2: value
 */

ya da bunun gibi;

/*
variable1: value
variable2: value
*/

Ne gerek değişken / değer çiftleri herhangi bir sayıda maç ve bir diziye eklemek mümkün olmaktır. Ben olsa anlamaya gibi olamaz, ben yanlış şeyler eşleşen tutmak.

Tüm değişkenler tek hat olacağını, böylece işler biraz basitleştirmek gerekir. 'Değişken' önce veya kolon sonra boşluk gözardı, ancak değer satır başka alanlarda muhafaza edilmelidir.

GÜNCELLEME:

Ne ile gidiş sona erdi Seçilen cevaba hafif bir genişleme vardı;

/(\w)*\s*:\s*([\w'"\/.: ]*)/

URL'ler şöyle değerler olarak kullanılması için izin verdi;

/**
 * url: 'some/file.png'
 * url: "http://www.google.ca/intl/en_ca/images/logo.gif"
 */

2 Cevap

Bu çalışmıyor mu? (Multi-line eşleştirme etkin varsayarsak)

(\w)*\s*:\s*(\w*)

Senin gibi bir şey ile yorum bloğu çıkardı varsayalım

\/\*.*?\*\/

. şey maç için ayarlanmış.

Bu deneyebilirsiniz:

$str=<<<A
/**
 * variable1: value
 * variable2: value
 */

some text

/*
variable1: value
variable2: value
*/

A;

preg_match("/\/\*(.*?)\*\//sm",$str,$matches);
foreach($matches as $k=>$v){
    $v = preg_replace("/\/|\*/sm","",$v);
    $v = array_filter(explode("\n",$v));
    print_r($v);
}

çıktı

$ php test.php
Array
(
    [1] =>   variable1: value
    [2] =>   variable2: value
    [3] =>
)
Array
(
    [1] => variable1: value
    [2] => variable2: value
)

şimdi vb patlayabilir kullanarak bu değişkenleri ayırabilirsiniz.