左右移动中间


get middle of a remove left and right

我有这个字符串:

"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);

这可能比您想要的要多,但可以从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。或者,作为一种较小的方法,只需对先前的定义执行str_replace(),并在用http_build_query()重建结果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";
$center = substr($data, strpos($data, '?center=') + 8);
$center = substr($center, 0, strpos($center, '&'));
print_r($center);
?>

http://codepad.org/RiJHTX6p

编辑:那些最后一分钟的更新总是让你。。。固定的

在单独的行的开始/结束处进行substr()匹配,因此第二个strpos()相对于第一个匹配的结果。我认为这种方式更容易理解,而且性能(我相信)应该没有显著差异。此外,它将处理查询字符串对的不同顺序,因为第二个"相关"&检查是在键之后的第一个。否则,我相信您最好分解查询字符串。

如果你想要像VB和VBA中那样的mid()函数,你可以使用:

<?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

substr取三个参数,最后一个是返回字符串的长度(从起始位置开始)。

因此,在您的情况下,您将使用$b = substr($string, strpos($string, $inico) + 8, 27);

然而,如果您像这样操作字符串,那么提取参数可能需要parse_urlexplode(当URL样式发生变化时,这就不那么麻烦了)。

这里有一个例子:

$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参数的名称值对。

$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;

Fiddle: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;

substr()

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

preg_replace()

echo preg_replace('~('?center=.+?&)~', '?', $string);