我有一堆协调数据以下列格式返回:
TYPE ((lat long, lat long), (lat long, lat long), (lat long))
我正在努力创建一个正则表达式,它将删除除数字,空格,逗号,超量和SINGLE括号之外的任何内容;我不能为我的生活弄清楚如何删除双括号而不是单个。我不需要用单个替换双括号,只需删除它们。
到目前为止,我想出的是:
preg_replace('/[^0-9,.-\s\(\)]/', '', $val);
但这会删除所有括号,这不是我想要的,因为我必须根据这些括号爆炸()它。我一直在尝试使用前瞻/后瞻性断言,但似乎无法将其弄好......
答案 0 :(得分:0)
如果不使用任何前瞻,你可以使用它:
$s = 'TYPE ((lat long, lat long 234), (lat long, 999 lat long), (0 lat long))';
$r=preg_replace(array('/\(\s*\(/', '/\)\s*\)/', '/[^\d,.\s-()]/'), array('(', ')', ''), $s);
//=> ( , 234), ( , 999 ), (0 )
编辑:要删除双((
或))
,请使用以下代码:
$r = preg_replace('/\(\s*\(|\)\s*\)|[^\d,.\s-()]/', '', $s);