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

我试图从字符串中除了数字(0-9)之外删除所有内容。

我以为这会有用的。

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

但是它回应了“604-619-5135”,我错过了什么?

136714 次浏览

试试这个:

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

Preg _ place 使用通常以 /开始和结束的 PCRE。

您需要将模式包含在分隔符中-通常使用斜杠(/):

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

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

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

对于那些不想使用 regex 的人来说,这是一种更实用的方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

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