PHP代码删除除数字以外的所有内容


135

我正在尝试从字符串中删除所有内容,但仅删除数字(0-9)。

我以为这样可以

echo preg_replace("[^0-9]","",'604-619-5135');

但它回显“ 60​​4-619-5135”。我想念什么???

Answers:


276

试试这个:

preg_replace('/[^0-9]/', '', '604-619-5135');

preg_replace使用PCRE,通常以开头和结尾/


内/双引号与PCRE tho没有任何关系。显然(在前几天(?flags)),设计/编写函数/ API的人认为,将正则表达式标志以双引号/flags形式传递而不是使用额外的函数参数是一个好主意。
Qtax 2011年

6
@Qtax:好点,是的,我知道这是我们从(“ g / re / p”)获得“ grep”一词的地方
Chris Eberle

109

这是供将来的开发人员使用的,您也可以尝试一下。也很简单

echo preg_replace('/\D/', '', '604-619-5135');

41
您好,我是未来的开发人员。这确实很好地满足了我们的需求。谢谢。
zesda

6
我的未来比Zesda还要远,并且可以确认,这仍然是一种帮助
myshadowself

3
我已经回到未来2,我可以确认他们仍然没有找到更好的方法。
Eoin

4
我是最遥远的未来中最后一位开发商。我痛心地说,这是再也没有任何用处。你们不应该使用那么多的塑料吸管,相信我,当您到达这里时,您会看到的....
杰里米

2
仅供参考:我们在39世纪仍然使用它。
user-44651


3

对于那些不想使用正则表达式的人来说,更实用的方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

注意:它也适用于电话号码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.