我试图从我的代码中删除所有非数字字符,但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将在全局级别搜索字符串中的空格,保证这将完成工作