如何从字符串中删除所有非数字字符


How to remove all non-numeric characters from a string?

我试图从我的代码中删除所有非数字字符,但FILTER_SANITIZE_NUMBER_INT允许加减号。

我如何使用PHP删除它们,我可以添加到我的代码?

这是我的代码。

$a = filter_var($a, FILTER_SANITIZE_NUMBER_INT);

我采用了以下解决方案。大写的"D"表示"非数字"。

public static function sanitize_integer($str)
{
    return (int) preg_replace('/'D/', '', $str);
}

如果您的输入字符串可能有您希望保留的前导零,则不要将更改后的字符串强制转换为整数。

return preg_replace('/'D/', '', $str);

要进行更少的替换(但结果相同),在每次替换期间使用+(一个或多个量词)删除多个连续的非数字字符。

return preg_replace('/'D+/', '', $str);

在这种情况下,您可能需要考虑简单地将结果强制转换为int类型,以删除加号。

$a = (int) filter_var($a,FILTER_SANITIZE_NUMBER_INT);

如果你也需要去掉减号(-),有效地得到数字的绝对值,使用PHP的abs()函数:

$a = abs((int) filter_var($a,FILTER_SANITIZE_NUMBER_INT));

假设你从js事件的输入字段中获取字符串文本,那么你可以这样做

    
   const inputTag = document.getElementById('input-id');
   //here you may check above variable if not null before calling 
   //  addEventListener on it
   inputTag.addEventListener('blur', (e)=>{   
      var inputText = e.target.value;
      inputText = inputText.replace(/'s/g,'');
   });

this regex/'s/g将在全局级别搜索字符串中的空格,保证这将完成工作