Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php谷歌地图正则表达式预匹配_Php_Preg Match All - Fatal编程技术网

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