做者:極客小俊 一個專一於web技術的80後
我不用拼過聰明人,我只須要拼過那些懶人 我就必定會超越大部分人!
CSDN@極客小俊,原創文章, B站技術分享
B站視頻 : 👉 Bilibili.com 👈
我的博客: 👉 cnblogs.com 👈php
在咱們說php系統自帶的正則處理函數以前,咱們先要回憶一下在PHP中正則表達式的組成元素有哪些? 以下:web
例如:一個匹配URL的正則表達式以下正則表達式
$url="/(https?|ftps?):\/\/(www|mail|news)\.([^\.\/]+)\.(com|org|net)/i";
應用以下案例:數組
$pattern="/(https?|ftps?):\/\/(www|mail|news)\.([^\.\/]+)\.(com|org|net)/i"; $string='http://www.baidu.com'; preg_match($pattern, $string,$arr); show($arr);
PHP中正則表達式與PHP正則處理函數結合使用
在PHP中正則表達式不能獨立使用、它只是一種用來定義字符串的規則模式、因此必須在、
相應的正則表達式函數中應用、才能實現相應的功能! 例如 匹配、分割、查找、替換
因此有了正則,再加上PHP正則處理函數來使用這個正則表達式,才能對字符串進行
分割、匹配、查找及替換等工做。函數
把一個正則表達式用在分割的函數中, 則使用這個正則表達式對字符串進行分割
把一個正則表達式用在匹配的函數中, 則使用這個正則表達式對字符串進行匹配
把一個正則表達式用在替換的函數中, 則使用這個正則表達式對字符串進行替換
把一個正則表達式用在查找的函數中, 則使用這個正則表達式對字符串進行查找性能
小提示: 能使用字符串處理函數完成的功能,就不要使用正則表達式處理函數 性能問題學習
preg_match(參數..)
做用: 在第一次匹配後將會中止搜索、返回正則的匹配次數 ,若是匹配返回1,不匹配返回0
發生錯誤返回false!
參數列表以下:
參數1:正則表達式
參數2:字符串
參數3:自定義存放結果數組
參數4:獲取目標字符串的開始下標值常量,
參數5:搜索目標字符的開始位置
案例以下:url
$string='www.baidu.com'; $pattern="/baidu/i"; preg_match($pattern, $string,$arr); show($arr);
preg_match_all(參數..)
做用:在匹配找到第一個後, 繼續從這個匹配位置搜索 直到把全部符合正則的都匹配出來
而後返回完整匹配數量次數,若是返回0次 說明沒有匹配,發生錯誤返回false.!
參數列表以下:
參數1:正則表達式
參數2:字符串
參數3:自定義存放結果數組
參數4:以什麼方式排列結果常量: PREG_SET_ORDER、
參數5:搜索目標字符的開始位置
案例以下:spa
$string='www.baidu.com www.sina.com www.bilibili.com'; $pattern="/www\..+?(\.com)/"; preg_match_all($pattern, $string,$arr); show($arr);
例1:查找字符串中出全部的URL 而且把全部URL地址加上紅顏色後打印輸出字符串。 以下code
$string='北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發'; //處理以前 echo nl2br($string); echo '<hr>'; $pattern="/(?:http[s]?|ftp?):\/\/(?:www|mail)\.[^\.\/]*\.(?:com|org|net)/i"; preg_match_all($pattern, $string,$arr); $num=0; foreach ($arr[0] as $key=>$val){ $string=str_replace($val, '<span style="color:red;">'.$val.'</span>', $string,$count); $num+=$count; } //處理以後 echo nl2br($string).'<br>替換的次數是'.$num.'次';
例2:查找字符串中出全部的URL 而且把全部URL地址替換成超級連接而後打印輸出字符串, 以下:
$string='北京市朝陽區http://www.sina.com中國區PHP開發 北京市朝陽區http://www.baidu.com中國區PHP開發 北京市朝陽區http://www.163.com中國區PHP開發 北京市朝陽區http://www.wangm.com中國區PHP開發 北京市朝陽區http://www.albb.com中國區PHP開發'; //處理以前 echo nl2br($string); echo '<hr>'; function setURL($string){ $pattern="/(?:http[s]?|ftp?):\/\/(?:www|mail)\.[^\.\/]*\.(?:com|org|net)/i"; preg_match_all($pattern, $string,$arr); foreach($arr[0] as $k=>$v){ $replace='<a href="'.$v.'">'.$v.'</a>'; $string=str_replace($v, $replace, $string); } return nl2br($string); } echo '<hr>'; //處理以後 echo setURL($string);
"點贊" "評論" "收藏"