PHP怎么去除文本中的字符并保留数字
发布时间:2023-05-18 14:12:36
PHP提供了许多内置函数可以用来去除文本中的字符并保留数字,以下是一些实现的方法:
方法一:使用preg_replace函数
preg_replace函数可以根据正则表达式来进行替换,可以用它来去除文本中的字符并保留数字。例如,以下代码可以去除字符串中的非数字字符:
$str = "a1b2c3d4";
$str = preg_replace('/\D/', '', $str);
echo $str; // 输出:1234
正则表达式\D表示匹配任何非数字字符(1到9之外的所有字符),用空字符''进行替换。
如果文本中有负号或小数点,我们可以使用正则表达式/[^-\d.]/来匹配除了数字、负号和小数点外的所有字符:
$str = "a1b-2.3c4";
$str = preg_replace('/[^-\d.]/', '', $str);
echo $str; // 输出:-2.34
方法二:使用filter_var函数
filter_var函数可以用来过滤字符串、数组和对象,可以用它来去除文本中的非数字字符。例如,以下代码可以去除字符串中的非数字字符:
$str = "a1b2c3d4"; $str = filter_var($str, FILTER_SANITIZE_NUMBER_INT); echo $str; // 输出:1234
常量FILTER_SANITIZE_NUMBER_INT表示过滤非数字字符,用空字符''进行替换。
如果文本中有负号或小数点,我们可以使用常量FILTER_SANITIZE_NUMBER_FLOAT来过滤数字、负号和小数点:
$str = "a1b-2.3c4"; $str = filter_var($str, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_NEGATIVE); echo $str; // 输出:-2.3
常量FILTER_FLAG_ALLOW_FRACTION表示允许小数点,常量FILTER_FLAG_ALLOW_NEGATIVE表示允许负号。
方法三:使用str_replace函数
str_replace函数可以用来替换字符串中指定的字符或字符串,可以用它来去除文本中的非数字字符。例如,以下代码可以去除字符串中的非数字字符:
$str = "a1b2c3d4";
$str = str_replace(range('a', 'z'), '', $str);
echo $str; // 输出:1234
使用range('a', 'z')得到从a到z的字符数组,用空字符''进行替换。
如果文本中有负号或小数点,我们可以使用str_replace函数来一个一个替换:
$str = "a1b-2.3c4";
$str = str_replace(array('-', '.'), '', $str);
echo $str; // 输出:1234
使用array('-', '.')表示要替换的字符数组,用空字符''进行替换。
无论使用哪种方法,建议先进行正则表达式或替换字符的处理,再进行数字的提取。
