php谷歌地图正则表达式预匹配
我有这些数据php谷歌地图正则表达式预匹配,php,preg-match-all,Php,Preg Match All,我有这些数据 var companies = [{"name":"Beliaa","lat":"30.043438999999999","lng":"31.239159999999998","infowindow":{"title":"Beliaa","address":"28 El Falaky St., Bab El Louk, Downtown, Cairo"}}]; translator.add("Rated Successfully", "Rated Successfully");
var companies = [{"name":"Beliaa","lat":"30.043438999999999","lng":"31.239159999999998","infowindow":{"title":"Beliaa","address":"28 El Falaky St., Bab El Louk, Downtown, Cairo"}}];
translator.add("Rated Successfully", "Rated Successfully");
translator.add("Reviewed Successfully", "Your review has been submitted and will be published as soon as possible. Thanks for sharing!");
我想去
纬度:30.0434389999999
和
液化天然气:31.23915999998
如果您试图在PHP中解析JS代码,请使用preg_match
$subject = <<<'__EOS__'
var companies = [{"name":"Beliaa","lat":"30.043438999999999","lng":"31.239159999999998","infowindow":{"title":"Beliaa","address":"28 El Falaky St., Bab El Louk, Downtown, Cairo"}}];
translator.add("Rated Successfully", "Rated Successfully");
translator.add("Reviewed Successfully", "Your review has been submitted and will be published as soon as possible. Thanks for sharing!");
__EOS__;
if(preg_match('/"lat":"(.*?)"/', $subject, $matches))
echo "lat:{$matches[1]}";
else
echo 'not found';
$subject=卡西莫多的答案会奏效,但可能会更好。
下面的方法使用更快的正则表达式模式,并消除了(浪费)使用捕获组的需要
单线性法:
list($lat,$lng)=preg_match_all('/"l(?:at|ng)":"\K[\d\.]+/',$in,$out)?$out[0]:['',''];
echo "lat:$lat<br>";
echo "lng:$lng";
正则表达式模式中的\K
将在“fullstring”子数组中存储所需的值。此技术可将阵列膨胀减少50%。这部分:l(?:at | ng)
将有效匹配lat
和lng
。并且:[\d\.]+
将匹配您所需的整个十进制子字符串
list()
将匹配的值分配给随时可用的变量;现在您可以根据需要使用这些变量。这看起来不像PHP代码。它的js代码我想在PHPSo中解析js代码我的答案将满足您的需要。您也可以轻松地调整这些行以提取经度。如果公司是有效的json:如果(preg\u match('~var companys=\K\[.*?\)(?=)~,$javascript,$M)和($json=json\u decode($M[0]){var\u dump($json[0]>lat,$json[0]>lng)}
lat:30.043438999999999
lng:31.239159999999998