PHP字符串学习之利用正则过滤字符,返回数字字符

简介: 在之前的文章《PHP字符串学习之怎么去除其他字符,只留下数字》中,我们介绍了利用for循环和in_array()或is_numeric()函数来提取字符串中数字字符的方法。这次我们继续PHP字符串的学习与练习,介绍一下提取字符串中数字字符的另几种方法。提取字符串中数字字符,本质上就是字符串过滤操作。看到字符串过滤,我就想起了 “正则表达式”。

在之前的文章《PHP字符串学习之怎么去除其他字符,只留下数字》中,我们介绍了利用for循环和in_array()或is_numeric()函数来提取字符串中数字字符的方法。这次我们继续PHP字符串的学习与练习,介绍一下提取字符串中数字字符的另几种方法。
提取字符串中数字字符,本质上就是字符串过滤操作。看到字符串过滤,我就想起了 “正则表达式”。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式通过构建具有特定规则的模式,与输入的字符串信息比较,在特定的函数中使用从而实现字符串的匹配、查找、替换及分割等操作。

下面我们看看如何利用正则表达式来过滤字符串,只提取字符串中的数字字符,返回由这些数字字符组成的子串。

例如我们给出下面一个字符串

$str ='0我是123456一段测试的字789符串0';
想要返回由数字字符组成的子串“01234567890”!

方法1、使用preg_replace()函数

<?php
$str ='0我是123456一段测试的字789符串0';
$result = preg_replace("/[^0-9]/", "", $str);
echo $result;
?>
分析一下上面的关键代码:

preg_replace("/1/", "", $str)的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符,即删除这些字符即可。那么就只剩下数字字符了,因此输出结果为:

1.png

我们来简单了解一下preg_replace()函数

preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数,该它的语法格式为“preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])”,表示搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换;可选参数 limit 用于设置最大可替换次数(默认值是-1,可无限制)。

方法2:使用preg_match_all()函数

<?php
$str ='0我是123456一段测试的字789符串0';
$result = '';
preg_match_all('/\d+/',$str,$array);
foreach($array as $arr){
foreach($arr as $value){
$result .= $value;
}
}
echo $result;
?>
分析一下上面的代码:

preg_match_all('/\d+/',$str,$array)的意思为在字符串$str中多次查找只包含0~9间数字字符的子串,将每次的匹配结果放在一个数组$array中。我们使用var_dump($array)来输出这个数组看看:

2.png

会发现结果数组$array是一个二维数组,包含匹配结果的元素是内层的数组。而想要将这些元素拼接成一个字符串,就需要嵌套两层foreach循环:

第一层循环中

foreach($array as $arr){
}
将内层数组作为值赋给$arr,所以在第二层循环中需要遍历的数组变成了$arr

foreach($arr as $value){
$result .= $value;
}
在每次循环中,将数组值赋给变量$value,然后使用“.=”运算符拼接到字符串$result中,因此一开始$result需要为空字符串。

输出结果为:

3.png

我们来简单了解一下preg_match_all()函数。

preg_match_all()函数可以搜索字符串中所有可以和正则表达式匹配的结果,是一个执行全局正则表达式匹配的函数,它的语法格式为

preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
$pattern 正则表达式

$subject 进行匹配的字符串

$matches 所有匹配结果(数组)

preg_match_all() 将实现全部结果的匹配,如果想要匹配成功一次后停止匹配,需要使用 preg_match() 函数。

好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

最后给大家推荐阅读一个经典课程《PHP字符串处理(玉女心经版)》,免费的~快来学习啊!

以上就是PHP字符串学习之利用正则过滤字符,返回数字字符的详细内容,更多请关注富贵论坛www.fgba.net其它相关文章!


  1. 0-9
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
如何学习PHP编程?
【10月更文挑战第2天】如何学习PHP编程?
38 9
|
3天前
|
PHP
在PHP中,字符串操作
在PHP中,字符串操作
10 3
|
4天前
|
PHP
06 一文带你搞定PHP字符串操作
路老师带你深入PHP:本文详细介绍了PHP中的字符串定义、操作及常用函数,包括字符串的定义方式、定界符、字符串操作(如去除空格、获取长度、截取、替换、分割和合成等)。通过实例讲解,帮助你快速掌握PHP字符串处理技巧。
11 2
|
2月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。
|
2月前
|
IDE 关系型数据库 PHP
php语言学习
【9月更文挑战第1天】php语言学习
34 3
|
2月前
|
SQL 安全 IDE
如何开始学习PHP?
【9月更文挑战第1天】如何开始学习PHP?
44 1
|
4月前
|
前端开发 JavaScript 安全
|
4月前
|
存储 PHP 数据库
|
4月前
|
PHP 数据安全/隐私保护 开发者