我有这个字符串:
"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);
答案 0 :(得分: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);
?>
现在,如果你真的想这样做,那么你可以再重新组合成一个CSS定义供以后使用,你可以反转它,但我可能会尝试以类似的方式分解CSS。或者,作为一种较小的方法,只需对先前的定义执行str_replace()
,并在使用http_build_query()
重建结果网址后替换$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);
?>
编辑:最后一分钟的更新总能让你......固定。
{/ 1}}在单独的行上开头/结尾匹配,因此第二个substr()
相对于第一个匹配的结果。我认为这样做的方式更容易理解,性能(我相信)不应该有太大的不同。此外,它将处理查询字符串对的不同顺序,因为第二个“相关”strpos()
检查是在密钥之后的第一个。否则,我相信你最好分解查询字符串。
如果你喜欢VB和VBA中的&
函数,你可以使用:
mid()
答案 1 :(得分:1)
substr
需要三个参数,最后一个是返回字符串的长度(从起始位置开始)。
因此,在您的情况下,您将使用$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参数的名称 - 值对。
答案 2 :(得分: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;
答案 3 :(得分:0)
SUBSTR()
echo substr($s, 0, strpos($s, '?') + 1) . substr($s, strpos($s, '&') + 1);
的preg_replace()
echo preg_replace('~(\?center=.+?&)~', '?', $string);