📜  在 PHP 中从字符串中提取数字(1)

📅  最后修改于: 2023-12-03 15:23:14.990000             🧑  作者: Mango

在 PHP 中从字符串中提取数字

在 PHP 中,提取字符串中的数字是一项常见任务。无论是从用户输入中获取数字,还是从文件名或数据库字段中提取数字,您都需要一种可靠的方式来处理这个任务。幸运的是,PHP 提供了许多内置函数和方法来帮助您完成这个任务。

使用 preg_match_all 函数

在 PHP 中,您可以使用 preg_match_all 函数来从字符串中提取数字。该函数使用正则表达式来匹配数字,并将其存储在一个数组中。以下是一个示例代码:

$str = "The price is $123.45.";
preg_match_all('!\d+!', $str, $matches);
print_r($matches[0]);

返回:

Array(
    [0] => 123
    [1] => 45
)

该代码使用了 preg_match_all 函数,第一个参数是一个正则表达式,用于匹配字符串中的数字。正则表达式 !\d+! 匹配一个或多个数字。第二个参数是要搜索的字符串,第三个参数是匹配的结果。

使用 filter_var 函数

另一种从字符串中提取数字的方法是使用 filter_var 函数。该函数可用于检查和过滤变量,并返回数字或布尔值(如果不能转换为数字,则返回 false)。以下是一个示例代码:

$str = "The price is $123.45.";
$num = filter_var($str, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
echo $num;

返回:

123.45

该代码使用了 filter_var 函数,第一个参数是要检查的字符串。第二个参数指定了要过滤的过滤器类型,该类型可确保仅返回数字和浮点数。第三个参数指定了额外的标志,该标志指示过滤器应允许小数点。

使用 sscanf 函数

最后,您可以使用 sscanf 函数从字符串中提取数字。该函数用于将格式化的字符串解析为变量。以下是一个示例代码:

$str = "The price is $123.45.";
sscanf($str, "The price is $%f.", $num);
echo $num;

返回:

123.45

该代码使用了 sscanf 函数,第一个参数是要解析的字符串。第二个参数是一个格式化字符串,其中包含要提取的数字的位置和格式。第三个参数是一个变量,用于存储解析后的数字。

总结:

以上是从字符串中提取数字的三种方法。您可以根据自己的需求选择最适合您的方法。无论您选择哪种方法,请确保在提取数字之前进行适当的输入验证。