这可能比您想经历的要多,但可以从 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()
对先前的定义执行 a 并将$url
重建结果 URL 后替换为http_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()
单独的行的开头/结尾进行匹配,因此第二个strpos()
是相对于第一个匹配的结果。我认为这样做的方式更容易理解,并且性能(我相信)应该不会有显着差异。此外,它将处理查询字符串对的不同顺序,因为第二个“相关”&
检查首先在键之后。否则,我相信您最好分解查询字符串。
如果你想要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