好的,这就是我的目标。
一些背景知识:我正在对其他人构建的现有WordPress网站进行更改。他们创建了一个textarea,客户端复制并粘贴嵌入Google Map的iframe。这适用于客户在其网站上发布的属性。
困境:这一切都很好,但我正在重建其属性的详细信息页面,我想删除所有iframe信息,只留下属性地址,以便我可以使用它通过Google Maps V3 jQuery插件创建新地图。
我想转此:
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=5475+NW+75+AVE,+Ocala+FL+34482&aq=&sll=29.300577,-82.294762&sspn=0.006755,0.013304&vpsrc=0&ie=UTF8&hq=&hnear=5475+NW+75th+Ave,+Ocala,+Florida+34482&t=m&z=14&ll=29.244022,-82.241361&output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=5475+NW+75+AVE,+Ocala+FL+34482&aq=&sll=29.300577,-82.294762&sspn=0.006755,0.013304&vpsrc=0&ie=UTF8&hq=&hnear=5475+NW+75th+Ave,+Ocala,+Florida+34482&t=m&z=14&ll=29.244022,-82.241361" style="color:#0000FF;text-align:left">View Larger Map</a></small>
进入:
5475 NW 75 AVE, Ocala FL 34482
我认为我通过查看preg_replace()走在正确的轨道上,但正则表达式是我得到的。或者,如果我可以提取也有帮助的坐标。我可以使用地址或纬度和长坐标来完成工作。
提前感谢您提供的任何帮助!
使用解决方案进行编辑,因为我的SO代表仍然很低:
感谢马里奥,我能够完成工作。以下是我可能提供帮助的最终代码。
您从这开始:
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=5475+NW+75+AVE,+Ocala+FL+34482&aq=&sll=29.300577,-82.294762&sspn=0.006755,0.013304&vpsrc=0&ie=UTF8&hq=&hnear=5475+NW+75th+Ave,+Ocala,+Florida+34482&t=m&z=14&ll=29.244022,-82.241361&output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=5475+NW+75+AVE,+Ocala+FL+34482&aq=&sll=29.300577,-82.294762&sspn=0.006755,0.013304&vpsrc=0&ie=UTF8&hq=&hnear=5475+NW+75th+Ave,+Ocala,+Florida+34482&t=m&z=14&ll=29.244022,-82.241361" style="color:#0000FF;text-align:left">View Larger Map</a></small>
你想要这个:
5475 NW 75 AVE,Ocala FL 34482
这对我有用:
// We first find and extract the 'src' from the iframe
// $map is my original iframe embed
// $q is our extracted and stripped text
preg_match('#q=([^&"]+)#', $map, $match)
and ($q = urldecode($match[1]));
// Now you can echo out the address or use it elsewhere.
// In my case, I am using jQuery goMap (http://www.pittss.lv/jquery/gomap)
// and can add a new point on the map via $q
echo $q;
答案 0 :(得分:1)
如果你坚持使用overkill解决方案,你首先要使用像QueryPath这样的HTML遍历库来拆分HTML并获取属性:
$url = qp($html)->find("iframe")->attr("src");
但这没有意义,实际上你应该从你的文本片段中提取URL:
preg_match('#http://[^"\']+#', $html, $match)
and ($url = $match[0]);
从那里只用parse_url($url, PHP_URL_QUERY)
将其拆分,然后用parse_str($qs, $vars)
提取这些位,以便得到$var["q"]
。
但如果它是一个有点连贯的输入,你可以用q=
参数创建:{/ p>
preg_match('#q=([^&"]+)#', $html, $match)
and ($q = urldecode($match[1]));
更懒惰的只是在整个HTML片段上使用parse_str
,并且祈祷前导和尾随垃圾不会干扰所需的片段。