URLからある引数を取り出したい。 - PHPプロ!Q&A掲示板
あるURLから、特定の文字列を正規表現で抽出したいのですが、
2日間試行錯誤して、結局できませんでした。
あるURLといっても、
googgelmapやmapplewebの地図URLから、緯度経度の情報を取り出したいのです。
現在はうまくいかなかったこともありしかたなく、下記のスクリプトを作成して抜き出しております。
例題のURL:http://maps.google.co.jp/maps?hl=ja&ie=UTF8&z=18&ll=35.666623,139.756538&spn=0.003491,0.004603&om=1
期待する結果:35.666623,139.756538
for ($i = 0; $i <= mb_strlen($fld041url); $i++) {
if ( $idokeido == 3 ) {
if (($idokeido == 3) && (is_numeric(substr($fld041url, $i,1)) || (substr($fld041url, $i,1) == "." ))){
//echo substr($fld041url, $i,1);
$urlido = $urlido . substr($fld041url, $i,1);
} elseif (substr($fld041url, $i,1) == "," ){$idokeido=4;
} else {$idokeido=0;}
} elseif ( $idokeido == 4 ) {
if (($idokeido == 4) && (is_numeric(substr($fld041url, $i,1)) || (substr($fld041url, $i,1) == "." ))){
//echo substr($fld041url, $i,1);
$urlkeido = $urlkeido . substr($fld041url, $i,1);
} else {$idokeido=0;}
} else {
if (($idokeido == 0) && substr($fld041url, $i,1) == "l" ){$idokeido=1;
//lである場合
} elseif (($idokeido == 1) && substr($fld041url, $i,1) == "l" ){$idokeido=2;
continue;
} elseif (($idokeido == 2) && substr($fld041url, $i,1) == "=" ){$idokeido=3;
continue;
} else {$idokeido=0;}
}
}
$urlido = $urlido;
$urlkeido = $urlkeido;
正規表現を使えば1行で、かつ簡単に抜き出せるハズという幻想を持っていますが、
スキルが追いつかず、無駄に記述をしております。
どなたか、
【http://maps.google.co.jp/maps?hl=ja&ie=UTF8&z=18&ll=35.666623,139.756538&spn=0.003491,0.004603&om=1】
から
【35.666623,139.756538】
を抜き出す正規表現を教えてください。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。