Can';无法在php中获取纯文本google maps api html_指令
我正在尽最大努力从GoogleMapsDirections api获取纯文本,它用json表示html_指令。一切都是用html编码的,我想输出纯文本 这是我得到的 这就是我想要的: 我试过一种preg_替换,它帮不了我 谷歌地图api链接Can';无法在php中获取纯文本google maps api html_指令,php,google-maps-api-3,map-directions,Php,Google Maps Api 3,Map Directions,我正在尽最大努力从GoogleMapsDirections api获取纯文本,它用json表示html_指令。一切都是用html编码的,我想输出纯文本 这是我得到的 这就是我想要的: 我试过一种preg_替换,它帮不了我 谷歌地图api链接 编辑:删除以前的代码段,并替换为可用的小程序 请注意,使用json_decode()处理数据时,unicode段(如\u003cb\u003eFlintergata\u003c/b\u003e会转换为Flintergata)。这有助于使正则表达式更具可读性
编辑:删除以前的代码段,并替换为可用的小程序 请注意,使用json_decode()处理数据时,unicode段(如
\u003cb\u003eFlintergata\u003c/b\u003e
会转换为Flintergata
)。这有助于使正则表达式更具可读性
请注意,$details
数组是一个多级关联数组,因此需要如图所示深入查找所需的数据
另外请注意,您提供的URL会产生一条路由,其中有一条分支。因此,我提供的代码显示并处理第一条路线的第一段
如果您使用不同的URL,您可能会得到多个路由,每个路由包含多个步骤。代码仍将处理第一条路由的第一段,但其每个(带有外部循环)都将显示所有路径(下面未显示)
正则表达式字符串“~>([A-Z].*)的解释可以说明您是如何调用API的吗?您是如何询问方向的?我添加了API的链接。如果您是一名经验丰富的Javascript程序员,您可以使用DirectionService和DirectionsRenderer对象在地图上绘制方向或以英文文本显示方向(或任何语言)。的示例显示了如何以文本显示。获取文本的一种偷偷摸摸的方法是从DirectionsRenderer生成的HTML中读取文本。这可能比尝试自己解析JSON更容易。Thx,但我想你没有明白我的问题。你看到我上面发布的那些图像了吗?是的,我看到了,但我认为让Goog更容易le对象为您解析。我相信我们可以使用preg_replace()实现您的要求所以我将测试并发布一个答案…这很接近?我很抱歉反应太晚。无论如何谢谢你的工作。但我认为这对我来说是可行的。你上面写的代码。使用json文件获取内容并使用你的代码不会给我任何影响。你能用完整的代码重写吗。我尝试了这个
好的,谢谢你发送您尝试过的代码。请参阅新的回复。如果您需要更多帮助或解释,我建议提出一个新问题并向我发送评论,以便我能够解决。我想最好现在就结束这个问题。非常感谢您的帮助。我想我通过将json更改为xml并从中获取内容找到了更好的解决方案。正如您可以在此处看到我的代码:
<?php
$json = file_get_contents("https://maps.googleapis.com/maps/api/directions/json?origin=sandnes&destination=vigrestad&key=");
$details = json_decode($json,true);
// $details is a large associative array
// print all the instructions for the first step of the fist leg of the first route
echo PHP_EOL."Here are the unfiltered html instructions for first leg of first route ".PHP_EOL.PHP_EOL;
$steps = $details['routes'][0]['legs'][0]['steps'];
foreach($steps as $step){
echo($step['html_instructions']).PHP_EOL; // print to see format
// we see unicode html_entities have been replaced and now look like <b> </b> etc
}
// now extra the required information from each step
echo PHP_EOL."Here are the filtered html instructions for first leg of first route ".PHP_EOL.PHP_EOL;
foreach ($steps as $step)
{
//preg_match_all("~003e([A-Z].*?)\\\\u003c~", $step['html_instructions'], $match); // not needed now
preg_match_all('#,<b>([A-Z].*?)</b>#, $step['html_instructions'], $match); // now detects strings between '>' and '<'
foreach($match[1] as $instructionPart)
{
echo $instructionPart." ";
}
echo PHP_EOL;
}
?>