Ben bir şablon sınıfı üzerinde çalışıyorum ve bir dize bağımsız listeden alıntı dizeleri listesini ayrıştırmak çalışırken ben bir sorun var. Örneğin dize atın:
$string = 'VAR_SELECTED, \'Hello m\'lady\', "null"';
Ben dize "Merhaba Leydim" ve "boş" ayıklayan bir regex ile geliyor sorun yaşıyorum. Ben var yakın
$string = 'VAR_SELECTED, \'Hello m\'lady\', "null", \'TE\'ST\'';
preg_match_all('/(?:[^\']|\\\\.)+|(?:[^"]|\\\\.)+/', $string, $matches);
print_r($matches);
Hangi çıkışlar:
Array
(
[0] => Array
(
[0] => VAR_SELECTED,
[1] => 'Hello m'lady',
[2] => "null",
[3] => 'TE'ST'
)
)
: Ancak daha karmaşık bir durum
$string = 'VAR_SELECTED, \'Hello "Father"\', "Hello \'Luke\'"';
preg_match_all('/(?:[^\']|\\\\.)+|(?:[^"]|\\\\.)+/', $string, $matches);
print_r($matches);
çıkışlar:
Array
(
[0] => Array
(
[0] => VAR_SELECTED,
[1] => 'Hello
[2] => "Father"
[3] => ',
[4] => "Hello
[5] => 'Luke'
[6] => "
)
)
Herkes bana bu sorunu çözmeye yardımcı olabilir? Birden regexes ileriye yolu var mı?
Edit Belki de bir yer tutucu ile dizeleri içinde virgül yerine daha kolay olması ve daha sonra bir patlayabilir ile dizeleri ayrı kıracak?
Edit 2 Sadece (ben kullanmak için gitmiyorum ki) bir basit güvensiz seçeneği düşündüm, ama bir E_NOTICE hata üretir.
$string = 'return array(VAR_SELECTED, \'Hello , "Father"\', "Hello \'Luke\'4");';
$string = eval($string);
print_r($string);