在本文中,我们将介绍在 PHP 中从字符串中提取数字的方法。
-
使用
preg_match_all()
函数的方法 -
使用
filter_variable()
函数 -
使用
preg_replace()
函数
在 PHP 中使用 preg_match_all()
函数从一个字符串中提取数字
我们可以使用内置函数 preg_match_all()
从字符串中提取数字。这个函数从一个字符串中全局搜索指定的模式。使用该函数的正确语法如下。
preg_match_all($pattern, $inputString, $matches, $flag, $offset);
内置函数 preg_match_all()
有五个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$pattern |
强制 |
它是我们要在给定的 string 中检查的模式 |
$inputString |
强制 | 它是我们要搜索给定模式的字符串 |
$matches |
可选 | 如果给定了这个参数,那么函数将匹配过程的结果存储在其中。 |
$flags |
可选 |
该参数有两个选项。PREG_OFFSET_CAPTURE 和 PREG_UNMATCHED_AS_NULL 。你可以在这里阅读它的描述。 |
$offset |
可选 | 它告诉函数从哪里开始匹配过程。通常情况下,搜索从头开始。 |
这个函数返回一个 Boolean
变量。如果给定的模式存在,它就返回 true。
下面的程序显示了我们如何使用 preg_match_all()
函数从给定的 string
中提取数字。
<?php
$string = 'Sarah has 4 dolls and 6 bunnies.';
preg_match_all('!\d+!', $string, $matches);
print_r($matches);
?>
我们使用 !\d+!
模式从字符串中提取数字。
输出:
Array
(
[0] => Array
(
[0] => 4
[1] => 6
)
)
在 PHP 中使用 filter_var()
函数从字符串中提取数字
我们还可以使用 filter_var()
函数从字符串
中提取数字。使用这个函数的正确语法如下。
filter_var($variableName, $filterName, $options)
函数 filter_var()
接受三个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$variableName |
强制 | 它是要过滤的变量 |
$filterName |
强制 |
它是应用于变量的过滤器的名称,默认情况下是 FILTER_DEFAULT 。默认情况下,它是 FILTER_DEFAULT 。 |
$options |
强制 |
这个参数告诉了我们要使用的选项,我们使用了 FILTER_SANITIZE_NUMBER_INT 过滤器。 |
我们使用了 FILTER_SANITIZE_NUMBER_INT
过滤器。从字符串中提取数字的程序如下。
<?php
$string = 'Sarah has 4 dolls and 6 bunnies.';
$int = (int) filter_var($string, FILTER_SANITIZE_NUMBER_INT);
echo("The extracted numbers are: $int \n");
?>
输出:
The extracted numbers are: 46
在 PHP 中使用 preg_replace()
函数从字符串中提取数字
在 PHP 中,我们也可以使用 preg_replace()
函数从字符串中提取数字。使用这个函数的正确语法如下。
preg_replace($regexPattern, $replacementVar, $original, $limit, $count)
函数 preg_replace()
接受五个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$regexPattern |
强制 | 它是我们将在原始的字符串或数组中搜索的模式 |
$replacementVar |
强制 | 它是字符串或数,我们用它来替代搜索值。 |
$original |
强制 | 它是一个字符串或数组,我们要从其中找到值并替换它。 |
$limit |
可选 | 这个参数限制了替换的数量 |
$count |
可选 | 这个参数告诉我们对原始字符串或数组的总替换次数 |
我们将使用模式 /[^0-9]/
来查找字符串中的数字。从字符串中提取数字的程序如下。
<?php
$string = 'Sarah has 4 dolls and 6 bunnies.';
$outputString = preg_replace('/[^0-9]/', '', $string);
echo("The extracted numbers are: $outputString \n");
?>
输出:
The extracted numbers are: 46