欢迎访问宙启技术站
智能推送

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('-', '.')表示要替换的字符数组,用空字符''进行替换。

无论使用哪种方法,建议先进行正则表达式或替换字符的处理,再进行数字的提取。