$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.
- 885 megtekintés
Hozzászólások
Kerülő megoldásként most
$text=str_replace("\'","'",$text);
sorral próbálkozom a preg_match_all előtt, de ez mégsem az igazi.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni