[megoldva] Regex kérdés


$text="var1='val1',var2='val2',var3=83434,var4='',var5='val5'";
preg_match_all('/,?(?P<keys>.*?)=(?P<values>\'.*?\'|[\\d]+)/m', $text, $result);

print_r($result);

Hogyan oldanád meg hogy ha az egyik változó értéke a listában escape-elt aposztrófot tartalmaz, továbbra is a '' határolókra illeszkedjen rá a regex value csoportja?

Tehát ha $text="var5='val5',var6='abc\'df',var7='val7'"; akkor a var6 'abc\'df' legyen.

Hozzászólások

Kerülő megoldásként most


$text=str_replace("\'","&#039;",$text);

sorral próbálkozom a preg_match_all előtt, de ez mégsem az igazi.

Megoldás:

van-e olyan ami üres ('') VAGY bármi csak nem \' ('.*?[^\\\']') VAGY szám ([\d]+)


,?(?<keys>[\w]*)=(?<values>''|'.*?[^\\\']'|[\d]+)

Hogy a PHP ne akadjon ki, :


preg_match_all('/,?(?P<keys>[\\w]*)=(?P<values>\'\'|\'.*?[^\\\\\\\']\'|[\\d]+)/m', $subject, $result);

Naon cuki.