php正则表达式应用,PHP 正则表达式应用
正則表達式是一個比較實用的開發工具,主要用來處理復雜的字符串,如按要求替換字符串,驗證Email有效性,驗證密碼強度,替換掉用戶輸入的特殊字符等等。正則表達式的基本語法請移步 Wiki 。
在一段文本里高亮顯示指定單詞
搜索并高亮顯示一個特殊的單詞可以應用于顯示搜索結果,將搜索關鍵字突出,便于用戶查閱。
[code lang=”php”]
$text = “Sample sentence from KomunitasWeb, regex regex has has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor”;
$text = preg_replace(“/\b(regex)\b/i”, ‘\\1‘,$text);
echo $text;
[/code]WhyTo:單詞 regex 左右的 \b 用來確定單詞邊界,\1 反引第一個成功匹配的子串
將指定文本內的 URL 替換為超鏈接
使用正則表達式帶搜索替換功能的函數來實現,自動將文本內的 URL 地址替換為超鏈接。
[code lang=”php”]
$text = “This is a link to http://www.example.com ,you can get tools from http://go-example.com/tools/ & ftp://example.com/p123.”;
// POSIX
echo ereg_replace(“(http|https|ftp)://([a-zA-Z0-9./-]+)([a-zA-Z0-9/]+)”, “\\0“, $text).”
“;
// Perl
echo preg_replace(“/(http|https|ftp):\/\/([a-zA-Z0-9.\/-]+)([a-zA-Z0-9\/]+)/”, “\\0“, $text);
[/code]
WhyTo:URL 均已 http(s)、ftp 開頭, 后面部分包含字母數字、英文句號(.)、短線(-)和斜線(/),原本第二個小括號內本可以完成匹配,但考慮到如果URL后緊跟一個英文句號(.),就會將它匹配到超鏈接中,因此使用第三個小括號的部分來將URL尾部的英文句號排除。 \0 引用整個字符串。
驗證密碼強度
密碼強度要求:
至少8個字符
必須同時包含至少1個大小寫字母
至少包含1個數字或者特殊字符
[code lang=”php”]
$passwd = “aAbcd e1c”;
if (preg_match(“/(?=^.{8,}$)((?=.*\d)|(?=.*[^a-zA-Z0-9]+))(?!.*\n)(?=.*[A-Z])(?=.*[a-z]).*$/”, $passwd))
print “Passwords is very Good!”;
else
print “The passwords is too weak or not allowed!”;
[/code]
WhyTo:“^.{8,}$”用來限定至少8個字符;(?=.*\d)|(?=.*[^a-zA-Z0-9]+) 用來指定必須包含至少1個數字或者1個特殊字符;(?!.*\n) 限定密碼內不能有換行符(我估計只有密碼不是接受標準輸入而是從字符串或文件獲取才會出現此情況);(?=.*[A-Z]) 指出必須包含大寫字母;(?=.*[a-z]) 指出必須包含小寫字母。
正則表達式的應用廣泛,寫法各異,但最終以簡潔準確為依據,重要的一點是,如果可以使用其他可替代的字符串函數進行處理,盡量減少正則表達式的使用,因為正則表達式會降低代碼速度。
總結
以上是生活随笔為你收集整理的php正则表达式应用,PHP 正则表达式应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一家破产的自动驾驶上市公司:烧了 90
- 下一篇: 单反档位介绍(单招什么意思)