我试图删除字符串中的所有内容,但只删除数字(0-9)。我以为这会有用。
echo preg_replace("[^0-9]","",'604-619-5135');
但它显示的是“604-619-5135”。我错过了什么???
chhqkbe11#
试试这个:
preg_replace('/[^0-9]/', '', '604-619-5135');
preg_replace使用的PCRE通常以/开始和结束。
/
6tdlim6h2#
这是为未来的开发者准备的,你也可以试试。也很简单
echo preg_replace('/\D/', '', '604-619-5135');
jei2mxaa3#
您需要用分隔符将模式括起来-通常使用斜杠(/)。试试这个:
echo preg_replace("/[^0-9]/","",'604-619-5135');
jyztefdp4#
注意:如果您正在过滤包含- sign的字符串,则此答案不适用,因为-代表减号,并且不会被过滤和删除。(如-2、-4等)。如果您仍然想使用它,请删除-字符,然后尝试。(- + . e)字符不使用此函数剥离对于那些不想使用正则表达式的人来说,这是一个更实用的方法:
$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);
注:它也适用于电话号码。
4条答案
按热度按时间chhqkbe11#
试试这个:
preg_replace使用的PCRE通常以
/
开始和结束。6tdlim6h2#
这是为未来的开发者准备的,你也可以试试。也很简单
jei2mxaa3#
您需要用分隔符将模式括起来-通常使用斜杠(/)。试试这个:
jyztefdp4#
注意:如果您正在过滤包含- sign的字符串,则此答案不适用,因为-代表减号,并且不会被过滤和删除。(如-2、-4等)。如果您仍然想使用它,请删除-字符,然后尝试。
(- + . e)字符不使用此函数剥离
对于那些不想使用正则表达式的人来说,这是一个更实用的方法:
注:它也适用于电话号码。