$s = '{"name":xxx,"id":123456}{{"a":xxx,"id":147258,"b":xxx}{"c":xxx,"id":985236,"d":xxx}}';
echo preg_replace('/(?<="id":)[^,}]+/', '"$0"', $s);
{"name":xxx,"id":"123456"}{{"a":xxx,"id":"147258","b":xxx}{"c":xxx,"id":"985236","d":xxx}}
echo preg_replace('/(?<="id":)[^,}]+/', '"$0"', $s);
{"name":xxx,"id":"123456"}{{"a":xxx,"id":"147258","b":xxx}{"c":xxx,"id":"985236","d":xxx}}
$s = '{"name":xxx,"id":123456}{{"a":xxx,"id":147258,"b":xxx}{"c":xxx,"id":985236,"d":xxx}}';
echo preg_replace('/("id":)([^,}]+)/', '$1"$2"', $s);解释版主的正则:
(?<="id":):(?<=pattern)在任何匹配 pattern 的字符串结尾处匹配查找字符串,但是pattern 必须为定长(也就是"id":),非获取
[^,}]+:匹配除了“,”和“}”之外的任何字符至少一次,$0就是匹配到了内容
和
preg_replace('/("id":)([^,}]+)/', '$1"$2"', $s)
是一回事