1

さて、これが私が行っていることです。

背景:他の誰かが作成した既存のWordPressWebサイトに変更を加えています。彼らは、クライアントがGoogleマップに埋め込まれたiframeをコピーして貼り付けるテキストエリアを作成しました。これは、クライアントがWebサイトに投稿するプロパティ用です。

ジレンマ:これはすべてうまくいっていますが、プロパティの詳細ページを再構築しています。すべてのiframe情報を削除し、プロパティアドレスのみを残して、それを使用して新しいマップを作成できるようにします。 Google MapsV3jQueryプラグイン。

私はこれを回したい:

<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、オカラ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;
4

1 に答える 1

1

やり過ぎの解決策を主張する場合は、最初に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=パラメーターを切り分けることができます。

preg_match('#q=([^&"]+)#', $html, $match)
and ($q = urldecode($match[1]));

さらに怠惰なのはparse_str、HTMLスニペット全体を使用することであり、先頭と末尾のガベージを祈っても、目的のスニペットに干渉することはありません。

于 2012-05-07T15:56:21.377 に答える