【发布时间】:2015-08-17 18:23:36
【问题描述】:
我有这个数组:
$array = '[[Smarties, 50g, 3, 1.99],
[M&Ms Peanut, 49g, 3, 1.99],
[Oreo Cookies, 300g, 1, 3.99],
[Pepsi, 355ml, 3, 1.29]]';
我需要使用 json_decode,所以我需要找到一种方法将里面的信息用引号括起来,如下所示:
[["Smarties", "50g", "3", "1.99"],
["M&Ms Peanut", "49g", "3", "1"."99"],
["Oreo Cookies", "300g", "1", "3.99"],
["Pepsi", "355ml", "3", "1.29"]]
我尝试使用 preg_replace,这就是我目前得到的(关闭,但它将价格分成两部分,还将两个单词的名称分成两部分。):
[["Smarties", "50g", "3", "1"."99"],
["M"&"Ms" "Peanut", "49g", "3", "1"."99"],
["Oreo" "Cookies", "300g", "1", "3"."99"],
["Pepsi", "355ml", "3", "1"."29"]]
我很难理解 preg_replace,希望有人能提供帮助。
有没有办法使用分隔逗号作为指导来确定引号的位置?
【问题讨论】:
-
您可以使用lookaround assertions,例如
(?<=\[)或(?!\s*\()。虽然查找连续的非逗号和括号并排除周围的空格可能更容易,然后用引号括起来。 -
你应该分享你已经拥有的正则表达式。它应该可以帮助您更快地获得答案
标签: php arrays regex preg-replace