2

私はこの文字列を持っています:

"cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat"

緯度と経度を削除したいと思います。"center="だから私は文字列の左側を右の開始までカットしたいと思い"&maptype="ます。

左の部分をカットしましたが、右の部分をカットする方法がわかりません。

編集:

$h1['style']=$html->find('td.sendGps',0)->style;

$string=$h1['style'];  // i have this, which does not work like the $string=""cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat""
$inicio = "?center=";
$fim = "&maptype=";

$b = substr($string, strpos($string, $inicio) + 8);
4

4 に答える 4

3

これはあなたがやりたいことよりも多いかもしれませんが、URLとURLからクエリ文字列を抽出して分解することは可能です:

<?php

$data = "cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat";

$url = substr($data, strpos($data, 'url(') + 4);
$url = parse_url(substr($url, 0, strpos($url, ') ')));

print_r($url);

$query = explode('&', $url['query']);
$querypairs = array();

for ($i = 0, $l = count($query); $i < $l; $i++) {
    $pair = explode('=', $query[$i]);
    $querypairs[$pair[0]] = $pair[1];
}

print_r($querypairs);

?>

http://codepad.org/xRZ3zEcU

さて、後で使用するためにCSS定義に再構成できるようにするために本当にそれを実行したい場合は、それを逆にすることができますが、おそらく同様の方法でCSSを分解しようとします。または、あまり意味がないので、前の定義に対してaを実行し、結果のURLを再構築しstr_replace()た後にを。に置き換えます。$urlhttp_build_query()

そして、あなたが本当に、本当にそれの残りの部分を気にしないでください...

<?php

$data = "cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat";

$center = substr($data, strpos($data, '?center=') + 8);
$center = substr($center, 0, strpos($center, '&'));

print_r($center);

?>

http://codepad.org/RiJHTX6p

編集:それらの直前の更新は常にあなたを取得します...修正されました。

substr()別々の行の最初/最後で一致を行うので、2番目はstrpos()最初の一致の結果に相対的です。この方法は理解しやすいと思いますし、パフォーマンス(私は信じています)に大きな違いはないはずです。さらに、2番目の「関連する」&チェックがキーの後に最初にあるため、クエリ文字列ペアのさまざまな順序を処理します。それ以外の場合は、クエリ文字列を分解したほうがよいと思います。

またmid()、VBやVBAのような機能が必要な場合は、次を使用できます。

<?php

function mid($start, $end, $str) {
    $str = substr($str, strpos($str, $start) + strlen($start));
    return substr($str, 0, strpos($str, $end));
}

$data = "cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat";

print_r(mid('?center=', '&', $data));

?>

http://codepad.org/2rjmC4PL

于 2012-09-09T17:02:50.073 に答える
1

substr3つのパラメーターを取り、最後は(開始位置からの)返された文字列の長さです。

したがって、あなたの場合は、を使用します$b = substr($string, strpos($string, $inico) + 8, 27);

ただし、このように文字列を操作している場合は、パラメータを抽出するために(URLスタイルが変更さparse_urlれたときの頭痛の種が少なくなりますが)おそらく支払いが発生します。explode

例を次に示します。

$originalString = "cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat";

$url = substr($originalString, strpos($originalString, "url(") + 4);
$url = substr($url, 0, strrpos($url, ")"));

$params = parse_url($url, PHP_URL_QUERY);
$paramArray = explode("&", $params);

$paramArrayこれで、URLのGETパラメータの名前と値のペアが含まれます。

于 2012-09-09T16:39:59.967 に答える
0
$str = "cursor:pointer; background:url(http://maps.google.com/staticmap?center=38.7376583333,-9.1658583333&maptype=satellite&zoom=14&size=300x300&key=ABQIAAAAvQ9c8pqKsi8K2dzb7UM9MhS13VDmd70a9rmDETSCgg2iXt3XnhQSnX4vFKfWO-3vdWNV5HHBnSLWLQ&sensor=true&hl=pt) no-repeat";
$str = explode('center=', $str);
$str = explode('&maptype=', $str[1]);
$str = $str[0];
echo $str;

フィドル: http ://www.phpfiddle.org/main/code/6rs-5hh

さらに、後でLATとLONGを別々に取得する場合は、それらを割り当てた後にこのコードを使用します$str

$str = explode(',', $str);
$lat = $str[0];
$long = $str[1];
echo 'Lattitude ' . $lat . ' and Longtitude ' . $long;
于 2012-09-09T16:41:46.330 に答える
0

substr()

echo substr($s, 0, strpos($s, '?') + 1) . substr($s, strpos($s, '&') + 1);

preg_replace()

echo preg_replace('~(\?center=.+?&)~', '?', $string);
于 2012-09-09T17:04:19.010 に答える