正则表达式的应用 匹配、查找、分割、替换

正则表达式的应用
匹配、查找、分割、替换
<?php 
$haystack = "this is a test";
//找到第一个包括i的后面的子字符串
$needle = "i";
echo strstr($haystack,$needle);
//is is s test
----------------------------------------------------
<?php 
$haystack = "this is a test";
$needle = "i";//找到最后一次i出现的位置
echo strrpos($haystack,$needle);
----------------------------------------------------
<?php 
/*
 * 1、有如下地址:
    $url = "http://www.baidu.com/index.php"
    $url = "../image/a.jpg"
   写一个自定义函数,获取不同url地址下的文件名称。
 */
$url = "http://www.baidu.com/index.php";
$url = "../image/a.jpg";
echo getFilename($url);
function getFilename($url){
    //取得"/"在url最后一次出现的位置
    $pos = strrpos($url,"/");
    $filename = substr($url,$pos+1);
    return $filename;
}
----------------------------------------------------
<?php 
$subject = "this is a test";
$pattern = "/(t)/";
//preg_match_all是二维数组
var_dump(preg_match_all($pattern,$subject,$match));
echo "<hr/>";
var_dump($match);
echo "<hr/>";
echo "<hr/>";
//preg_match是一维数组
var_dump(preg_match($pattern,$subject,$match));
echo "<hr/>";
var_dump($match);
----------------------------------------------------
<?php 
/*
 * 2、给一组电话号码
   $input = array("18500698888","123456789","18634771800");
   找出合法的电话号码。
 */
//正则匹配
$input = array("18500698888","123456789",
               "18634771800");
$pattern = "/^1[34578]\d{9}$/";
var_dump(preg_grep($pattern,$input));
----------------------------------------------------
<?php 
/*
 * 2、给一组邮箱地址
   $emails = array("tom@qq.com","jack.john@qq.com","163.com");
   找出合法的邮箱地址。
 */
//正则匹配
$emails = array("tom@qq.com",
        "jack.john@qq.com",
         "163.com");
$pattern='/\w+([\.\-]\W+)?@\w+\.(com|cn|net|org)/';
var_dump(preg_grep($pattern,$emails));
----------------------------------------------------
<?php
/*
 * 、字符串的分割
   有如下字符串:
   $str = "this is a test"
   用字符串中的字母 s 对字符串进行分割
 */
//字符串的分割
$str = "this is a test";
//explode 把字符串切割成数组
$arr=explode('s',$str);
echo '<pre>';
print_r($arr);
echo '</pre>';
//implode 和join 把数组连接成字符串
$str=join('s',$arr);
echo $str;
----------------------------------------------------
<?php
//正则分割
/*
 * 4、有如下的字符串
    $str = "th:i,s i.s@ a te%st"
    应用字符串的分割处理函数。在字符串中按照特殊符号进行分割。
 */
$str = "th:i,s i.s@ a te%st";
$pattern = "/[\:\,\.\@\%]/";
$arr=preg_split($pattern,$str);
echo '<pre>';
print_r($arr);
echo '</pre>';
----------------------------------------------------
<?php
header("Content-Type:text/html;charset=utf-8");
/*
 * 5、应用字符串替换函数,对下面的字符串进行替换:
   今天的晚饭是:"米饭、面条、炒饼"
   替换成喜欢吃的饭:
   今天的晚饭是:""
 */
//字符串的替换
$str = "今天的晚饭是:米饭、面条、炒饼";
$search=array('米饭','面条','炒饼');
$replace=array('火锅','自助餐','麻辣面');
//数组的话,需要一一对应
//$replace='**';可以直接使用字符串替换,就不用考虑这些问题
echo str_replace($search,$replace,$str);
//返回的结果是替换了的新$str字符串
//今天的晚饭是:火锅、自助餐、麻辣面
----------------------------------------------------
<?php 
header("Content-Type:text/html;charset=utf-8");
//正则替换
$subject = "this is a test";
$pattern = "/is/";
$replace = "";
echo preg_replace($pattern,$replace,$subject);
----------------------------------------------------
<?php 
header("Content-Type:text/html;charset=utf-8");
//正则替换
$subject = "我是一个含有
<span style='color:red;'>HTML</span>标签
        的<b>字符</b>串";
//$pattern = "/<\/?[\w\s\=\'\"\:\;]+>/";
$pattern = "/<[^<>]+>/";
$replace = "";
echo $subject;
echo "<hr/>";
echo preg_replace($pattern,$replace,$subject);
----------------------------------------------------
<?php
header("Content-Type:text/html;charset=utf-8");
$subject = "abcdhttps://www.baidu.comabchttp://www.sohu.comabcdhttp://music.yahoo.comabcdftp://www.163.com";
//$pattern = "/(https?|ftps?):\/\/(\w+)\.(\w+)\.(com|cn|net|org)/";
$pattern = "/(https?|ftps?):\/\/(\w+)\.(\w+)\.(com|cn|net|org)/";
//这里面有一个小技巧,使用\\1 \\2 \\3 \\4 反向引用 分别取出数组里面的东西,既然是存放在数组里面的,那么全局可用
$replace = '<a href="\1://\2.\3.\4">\\0</a>';
//查看一下抓取到的$match数组
preg_match_all($pattern,$subject,$match);
echo '<pre>';
print_r($match);
echo '</pre>';
echo preg_replace($pattern,$replace,$subject);
/*Array
(
    [0] => Array
    (
        [0] => https://www.baidu.com
            [1] => http://www.sohu.com
            [2] => http://music.yahoo.com
            [3] => ftp://www.163.com
        )

    [1] => Array
(
    [0] => https
            [1] => http
            [2] => http
            [3] => ftp
        )

    [2] => Array
(
    [0] => www
            [1] => www
            [2] => music
            [3] => www
        )

    [3] => Array
(
    [0] => baidu
            [1] => sohu
            [2] => yahoo
            [3] => 163
        )

    [4] => Array
(
    [0] => com
            [1] => com
            [2] => com
            [3] => com
        )
)*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值