在 sf 上看到一个问题,$str 是从网页获取的字符串,以下为代码,大家可以在线测试,地址 https://tools.vaptu.com/online/shared/1644b15ce95ce0d62de85aa47cd73fdd
$str="<script>
window.shop_config={
userId: 0,
shopId: 11576689,
shopName: \"优尼牙科\",
cityId: 2,
power:5,
shopType:85,
map:{
power:5,
manaScore:0
},
licensePics:['http://mss.sankuai.com/v1/mss_bccd2477df9e492ca0baeb67e4eb3491/qualification/8723a20a-a40c-11e3-8fb0-a254baaa25bb?temp_url_sig=c17ff6525cfabce9e5f94b46ca3f9ee5115a1309&temp_url_expires=1479364038',],
mainCategoryId:182,
defaultPic:\"http://qcloud.dpfile.com/pc/hhF4nWJIwWw4FXmGBaW39dKYr5NdlHLz5G64Lx3QSTypRKzSBzQnLPwzWURFZUAvtOnd3gXQdDYlAqlaVaAFeZ0rYYyiRo_EhzufqWWjTjs.jpg\"
}
</script>";
preg_match('#<script>
window.shop_config=([\s\S]*)</script>#',$str,$match);
print_r($match[1]);//匹配出 shop_config 变量
$res=preg_replace('#\s*(.*):\s*(.*),#','"$1":"$2",',$match[1]);//补充双引号,但是 js 对象里有的值已经有双引号了,而且 licensePics 里面是个数组,加双引号没用
print_r(json_decode($res,true));//解释失败了,怎么办?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.