• 技术文章 >后端开发 >PHP问题

    php怎么利用正则排除字符串中的字符

    青灯夜游青灯夜游2022-12-15 17:39:32原创672

    两种方法:1、用preg_replace(),可执行正则表达式的搜索和替换,只需将字符串中匹配的字符替换为空字符即可,语法“preg_replace(正则, "", $str)”。2、用preg_match_all(),可搜索字符串中所有和正则表达式匹配的结果,会将每次的匹配结果放在一个数组$array中,语法“preg_match_all(正则,$str,$array);”。

    本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

    什么是正则表达式

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

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

    php利用正则过滤字符串

    在php中,可以利用正则表达式过滤字符串,排除(删除)或者提取指定字符。

    方法1、使用preg_replace()函数

    preg_replace() 函数可以执行正则表达式的搜索和替换,是一个强大的字符串替换处理函数。

    preg_replace($pattern, $replacement, $subject [, $limit = -1 [, &$count]])

    示例:

    <?php
    header('content-type:text/html;charset=utf-8');  
    $str ='0我是123456一段测试的字789符串0';
    echo "原字符串:".$str."<br>";
    $result = preg_replace("/[^0-9]/", "", $str);
    echo "过滤后字符串:".$result;
    ?>

    preg_replace("/[^0-9]/", "", $str)的意思为匹配除了0~9间的数字以外的字符,并将这些字符替换为空字符(即删除这些字符),那么就只剩下数字字符了:

    1.png

    方法2:使用preg_match_all()函数

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

    preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])

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

    示例:

    <?php
    header('content-type:text/html;charset=utf-8');  
    $str ='0我是123456一段测试的字789符串0';
    echo "原字符串:".$str."<br><br>";
    
    $result = '';
    preg_match_all('/\d+/',$str,$array);
    echo "过滤结果:";
    var_dump($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){
    	foreach($arr as $value){
    		$result .= $value;
    	}
    }
    echo "过滤后字符串:".$result;

    3.png

    推荐学习:《PHP视频教程

    以上就是php怎么利用正则排除字符串中的字符的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php传参都是字符串吗 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php字符串怎么求指定字符出现次数• php字符串怎么只留下数字• php字符串怎么只提取中文字符• php字符串反转的函数是什么• php字符串怎么全部转为大写
    1/1

    PHP中文网