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

p4rjhz4m  于 2023-05-27  发布在  PHP
关注(0)|答案(3)|浏览(188)

我试图从代码中删除所有非数字字符,但FILTER_SANITIZE_NUMBER_INT允许使用加号和减号。
我如何使用PHP删除它们并将其添加到我的代码中?
这是我的代码。

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

cngwdvgl1#

我采用了以下解决方案。大写“D”代表“非数字”。

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

如果您的输入字符串可能包含您希望保留的前导零,请不要将变异字符串转换为整数。

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

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

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

mlnl4t2r2#

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

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

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

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

lb3vh1jj3#

假设你是从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,'');
   });

这个regex /\s/g将在全局级别搜索字符串中的空格,这将完成这项工作

相关问题