在 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));//解释失败了,怎么办?
1
SoloCompany 2016-11-19 18:26:13 +08:00 via iPhone
如果不涉及安全问题
用 eval 啊, context.window={} |