php 从字符串中删除所有非数字字符;[^0-9]与预期不匹配

5t7ly7z5  于 2023-05-27  发布在  PHP
关注(0)|答案(4)|浏览(211)

我试图删除字符串中的所有内容,但只删除数字(0-9)。
我以为这会有用。

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

但它显示的是“604-619-5135”。我错过了什么???

chhqkbe1

chhqkbe11#

试试这个:

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

preg_replace使用的PCRE通常以/开始和结束。

6tdlim6h

6tdlim6h2#

这是为未来的开发者准备的,你也可以试试。也很简单

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

jei2mxaa3#

您需要用分隔符将模式括起来-通常使用斜杠(/)。试试这个:

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

jyztefdp4#

注意:如果您正在过滤包含- sign的字符串,则此答案不适用,因为-代表减号,并且不会被过滤和删除。(如-2、-4等)。如果您仍然想使用它,请删除-字符,然后尝试。
(- + . e)字符不使用此函数剥离
对于那些不想使用正则表达式的人来说,这是一个更实用的方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

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

相关问题