Próbuje sparsować tekst z php z tablicami.
w stringach jest:
Kod
$SERVICE_LANG['IMP']['err_kraj'] = 'Wybierz kraj';
ale może być tez tablica więcej niż 2 wymiarowa i tych ma NIE dopasowywać.
Kod
$SERVICE_LANG['IMP']['err_kraj']['w'] = 'Wybierz kraj';
Regexp jest taki:
Kod
\$SERVICE_LANG\s*\[([\'\"])(.*?)\1\]\s*\[([\"\'])(.*?)\3\]\s*=\s*([\"\'])(.*)\5\s*;
I w perlu działa bardzo dobrze. Natomiast w PHP w funkcji preg_match nie bardzo.
Poniższy kod:
Kod
if( preg_match('/\$SERVICE_LANG\s*\[([\'\"])(.*?)\1\]\s*\[([\"\'])(.*?)\3\]\s*=\s*([\"\'])(.*)\5\s*;/',$line,$matches) )
{
print "<pre>";print_r($matches);"</pre>";
}
{
print "<pre>";print_r($matches);"</pre>";
}
Zwraca taka tablice.
Kod
Array
(
[0] => $SERVICE_LANG['IMPREZY']['err_kraj']['w']='Wybierz kraj';
[1] => '
[2] => IMPREZY
[3] => '
[4] => err_kraj']['w
[5] => '
[6] => Wybierz kraj
)
(
[0] => $SERVICE_LANG['IMPREZY']['err_kraj']['w']='Wybierz kraj';
[1] => '
[2] => IMPREZY
[3] => '
[4] => err_kraj']['w
[5] => '
[6] => Wybierz kraj
)
czyli mimo, że jest dopasowanie .*? minimalistyczne i tak dopasowuje źle.