Can';无法在php中获取纯文本google maps api html_指令

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)。这有助于使正则表达式更具可读性

我正在尽最大努力从GoogleMapsDirections api获取纯文本,它用json表示html_指令。一切都是用html编码的,我想输出纯文本

这是我得到的

这就是我想要的:

我试过一种preg_替换,它帮不了我

谷歌地图api链接

编辑:删除以前的代码段,并替换为可用的小程序

请注意,使用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; 

} 
?>