整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          PHP入門讀書筆記(十一):正則表達式語法規則

          PHP入門讀書筆記(十一):正則表達式語法規則

          則表達式是一種描述字符串結構的語法規則,是一個特定的格式化模式。可以匹配、替換、截取匹配的字符串。

          一個完整的正則表達式由兩部分構成,元字符和文本字符。元字符就是具有特殊含義的字符,如“*”,“?”。文本字符就是普通的文本,如字母和數字等。PCRE風格的正則表達式會字定界符“/”的中間。如:/^http:\/\/(www\.)?.+.?$/。下面的例子沒有遵守這個風格。

          下面介紹它的語法規則

          一、行定位符(^和$)

          行定位符就是用來描述字符串的邊界。“^”表示行的開始,“$”表示行的結尾。

          如:^stu 表示是匹配字符串是stu開頭的,student,study 就可以被找出來,而tastu,tbstuay就不能匹配了。

          stu$ 表示是匹配字符串是stu結尾的,tastu就可以被找出來了。

          如果想要匹配的字符串可以出現在字符串的任意位置,那么直接寫stu就可以了。

          二、單詞定界符(\b、\B)

          想匹配字符串出現的任意位置,可以直接使用字符串。像tm可以在 html,utmost中被找出來。但現在如果要匹配單詞tm,而不是單詞的一部分,就可以使用單詞界定符\b表示要查找的字符串為一個完整的單詞。如:\btm\b

          \B 的意思是匹配的字符串不能是一個完整的單詞,而是其他單詞或者字符串的一部分。和\b的意思的剛好相反的。

          三、字符類([])

          正則表達式是區分大小寫的,如果要忽略大小寫可以使用方括號表達式“[]”。只要匹配的字符串出現在方括號內,即可表示匹配成功。要注意的是,一個方括號只能匹配一個字符。如要匹配字符串tm不區分大小寫,可以寫作:[Tt][Mm]

          四、選擇字符(|)

          選擇字符可以理解為或。T|tM|m 意思就是字母T或者t開頭,后面接一個字母M或者m。“[]”和“|”使用區別在于“[]”只能匹配單個字符,而“|”可以匹配任意長度的字符串。

          五、連字符(-)

          連字符可以表示字符的范圍。比如我們規定一個字符串只能是小寫字母開頭,我們可以寫[a,b,c,d,.....],用連字符就可以之間寫[a-z]

          六、排除字符([^])

          ^放進了方括號中,表示的是排除的意思。如:[^a-z] 表示的就是不能以小寫字母開頭

          七、限定符(?,*,+,{n,m})

          ?:匹配前面的字符零次或者一次。如:colou?r,該表達式可以匹配 colour 和 color

          +:匹配前面的字符一次或者多次。如:go+gle,該表達式可以匹配的范圍從google到goo...gle

          *:匹配前面的字符零次或者多次。如:go*gle,該表達式可以匹配的范圍從ggle到goo...gle

          {n}:匹配前面的字符n次。如:go{2}gle,該表達式只匹配google

          {n,}:匹配前面的字符最少n次。如:go{n,}gle,該表達式可以匹配的范圍從google到goo..gle

          {n,m}:匹配前面的字符最少n次,最多m次。如:employe{0,2},該表達式可以匹配employ,employe和employee這3種情況。

          八、點號字符(.)

          點字符可以匹配出除換行符外的任意一個字符。如匹配s開頭,t結尾,中間包含一個字母的單詞,可以寫作:^s.t$。可以匹配到sat、set、sit等等。匹配一個單詞,它的第一個字母是r,第3個字母是s,最后一個字母是t。那么可以寫作:^r.s.*t$

          九、轉義字符(\)

          正則表達式也是用轉義字符將特殊字符(如:“.”,“?”,“\”等等)變為普通的字符。如匹配127.0.0.1的IP地址,可以寫成:[0-9]{1,3}(\.[0-9]{1-3}){3}

          這里的點就是通過轉義。

          十、反斜線(\)

          “\”可以做轉義字符外,還能做其他功能。

          1、將一些不可打印的字符顯示出來

          \a:警報

          \b:退格

          \e:escape

          \f:換頁符

          \r:回車符

          \t:水平制表符

          \xhh:十六進制代碼

          \ddd:八進制代碼

          \cx:也就是control-x的縮寫,匹配由x指明的控制字符,x是任意字符

          2、還可以指定預定義字符集

          \d:任意一個十進制數字,相當于[0-9]

          \D:任意一個非十進制數字

          \s:任意一個空白字符(空格、換行符、換頁符、回車符、水平制表符),相當于[\f\n\r\t]

          \S:任意一個非空白字符

          \w:任意一個單詞字符,相當于[a-zA-Z0-9]

          \W:任意一個非單詞字符

          3、定義斷言

          \b:單詞界定符,用來匹配字符串中的某些位置。\b是以統一的定界符來匹配。

          \B:非單詞定界符序列

          \A:總是能夠匹配待搜索文本的起始位置

          \Z:表示在未指定任何模式下匹配的字符,通常是字符串的末尾位置,或者是在字符串末尾的換行符之前的位置

          \z:只匹配字符串的末尾,而不考慮任何換行符

          \G:當前匹配的起始位置

          十一、括號字符(())

          1、可以改變限定符的作用范圍(如:“|”,“*”,“^”等等)。比如:(thir|four)th,這個表達式的意思是可以匹配單詞thirth或者fonrth,如果不用小括號,可以匹配單詞thir和fourth

          2、可以分組,也就是子表達式。如:(\.[0-9]{1,3}){3},就是對分組(\.[0-9]{1,3})進行重復操作。

          十二、反向引用

          反向引用,就是依靠子表達式的“記憶”功能來匹配連續出現的字串或字母。如匹配連續兩個it,首先將單詞it作為分組,然后后面加上“”即可。格式為:(it)。如果匹配的子串不固定,那么就將括號內的字串寫成一個正則表達式。如果使用了多個分組,那么可以使用“”、“”來表示每個分組(順序是從左到右)。

          如:([a-z])([A-Z])

          除了可以使用數字來表示分組外,還可以自己來指定分組名稱。

          語法格式:(?P<subname>)

          如果想要反向引用該分組,使用如下語法:

          語法格式:(?P=subname)

          重寫表達式([a-z])([A-Z]),為這兩個分組分別命名,并反向引用他們,正則表達式如下:

          (?P<fir>[a-z])(?P<sec>[A-Z])(?P=fir)(?P=sec)

          十三、模式修飾符(待了解)

          模式修飾符的作用就是設定模式。也就是規定正則表達式應該如何解釋和應用。php的主要模式修飾符如下:

          修飾符:i 表達式寫法:(?i)...(?-i)、(?i:...)

          說明:忽略大小寫模式

          修飾符:m 表達式寫法:(?m)...(?-m)、(?m:...)

          說明:多文本模式。也就是說字串內部有個換行符時候,影響“^”和“$”的匹配。

          修飾符:s 表達式寫法:(?s)...(?-s)、(?s:...)

          說明:單文本模式。在此模式下,元字符點號(.)可以匹配換行符。其他模式則不能匹配換行符。

          修飾符:x 表達式寫法:(?x)...(?-x)、(?x:...)

          說明:忽略空白字符


          明天來看看php中一些正則表達式函數。

          趣是最好的老師,HelloGitHub 就是幫你找到興趣!

          簡介

          分享 GitHub 上有趣、入門級的開源項目。

          這是一個面向編程新手熱愛編程對開源社區感興趣 人群的月刊,月刊的內容包括:各種編程語言的項目讓生活變得更美好的工具書籍、學習筆記、教程等,這些開源項目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動手用起來,加入到開源社區中。

        1. 會編程的可以貢獻代碼
        2. 不會編程的可以反饋使用這些工具中的 Bug
        3. 幫著宣傳你覺得優秀的項目
        4. Star 項目??
        5. 在瀏覽、參與這些項目的過程中,你將學習到更多編程知識提高編程技巧找到編程的樂趣

          最后 HelloGitHub 這個項目就誕生了


          以下為本期內容|每個月 28 號發刊

          C 項目

          1、ngx_waf:一個 Nginx 防火墻模塊。我差點就錯過了的寶藏項目,它使用簡單不需要復雜的配置,支持的功能直戳我的痛點。你看:

        6. 支持 IPV4、IPV6 和 IP 段黑白名單
        7. CC 防御即自動拉黑 IP 一段時間
        8. 支持 GET、POST、URL、Cookie 等黑名單(正則)
        9. C++ 項目

          2、fast-cpp-csv-parser:讀取 CSV 文件的 C++ 庫(僅頭文件)。示例代碼:

          # include "csv.h"
          
          int main(){
            io::CSVReader<3> in("ram.csv");
            in.read_header(io::ignore_extra_column, "vendor", "size", "speed");
            std::string vendor; int size; double speed;
            while(in.read_row(vendor, size, speed)){
              // 對 ram.csv 文件中的數據,做你想做的事情吧!
            }
          }
          

          3、UNO:使用 C++ 編寫的命令行 UNO 紙牌游戲。操作方便支持人機或聯機對戰,游戲基于 Asio 網絡庫和現代 C++ 開發,也有對 C++17 的嘗試。分別實現了服務端、客戶端,代碼簡單對 C++ 新手友好,UNO 的愛好者快來玩一玩吧!

          4、godot:一款功能豐富的開源游戲引擎。最初它只是一款 2D 引擎,近期拓展了 3D 部分的能力。相較于 UE4 或者 Unity 這樣的成熟商業引擎來說,Godot 還很年輕不夠成熟,尤其 3D 方面的能力。但它擁有簡易的開發方式,上手簡單。而且社區活躍、文檔覆蓋全面、有較為豐富的示例代碼,對于剛入門的游戲開發者友好。同時開源引擎底層代碼完全開源,開發者可以閱讀和貢獻代碼,而不是只停留在游戲邏輯開發層面。總而言之 Godot 是一個極有潛力的游戲引擎,推薦給想學習游戲開發的同學

          CSS 項目

          5、water.css:一個專門為簡單頁面和示例網頁準備的 CSS 框架

          Go 項目

          6、fyne:一款 Go 語言跨平臺 UI 庫。想用 Go 寫圖形界面應用的小伙伴,快速上手:

          安裝
          $ go get fyne.io/fyne
          運行一個 demo
          $ go get fyne.io/fyne/cmd/fyne_demo/
          $ fyne_demo
          

          7、golearn:Go 寫的機器學習框架。來,跑個模型試試吧:

          cd $GOPATH/src/github.com/sjwhitworth/golearn/examples/knnclassifier
          go run knnclassifier_iris.go
          

          Java 項目

          8、keepass2android:一個開源的 Android 密碼管理器。下載地址,功能:

        10. 僅需輸入一次安全性很強的密碼(很長或隨機的密碼)
        11. 支持幾乎可與所有的 Android 的瀏覽器
        12. 支持 .kdbx 文件的讀寫
        13. 能夠編輯條目包括附加字符串字段、文件附件、標簽等
        14. 等等
        15. 9、PrettyZoo:一款 Java 寫的高顏值 ZooKeeper 客戶端桌面應用。該項目使用了 JDK11 以及 JavaFX 編寫的 GUI 客戶端,代碼量適中適合想學習 JavaFX 編寫應用的朋友。需要連接 ZK 服務端查看數據的話,手邊有這么個工具還是挺方便的。實用和顏值集一身的項目

          10、vueblog:一款輕量級 Java 博客項目。基于 SpringBoot+Vue 實現并附有詳細開發文檔和講解視頻,讓剛學會 Java 的同學也能搞定。每個體面的技術人員可能都有一個自己說了算的博客吧

          JavaScript 項目

          11、x-spreadsheet:基于 JavaScript 實現的輕量級 Web 電子表格庫。它功能齊全,包含表格的基本操作和函數等,還有詳細的中文文檔,在線嘗試

          12、h5-Dooring:一款功能齊全的 H5 頁面可視化配置平臺。讓你通過可視化的方式制作出 H5 頁面,技術棧以 React 為主,后臺采用 Node.js 實現。雖然網上有很多這種工具,但本項目免費開源、功能齊全值得一試

          13、Ant-Forest:基于 Auto.js 的螞蟻森林能量自動收獲腳本。它是個“綠色環保”的項目,我能從中感受到滿滿的愛和想把它做好的決心!來看看作者開發 Ant-Forest 時解決了哪些難題:

          1. 能量球識別無法使用控件信息(使用基于霍夫變換的圖像識別)
          2. 腳本執行邏輯易被打斷(使用事件監聽及擴展模塊增強魯棒性)
          3. 每次只能運行一次(完善的復查及定時循環功能)
          4. 不同設備分辨率及屏幕比例不同(使用等比縮放/定寬縮放等進行適配)

          14、tui.image-editor:功能齊全的圖片編輯器。支持圖片剪裁、旋轉、涂鴉等功能,實現了 Vue 和 React 封裝的組件,便于整合進你的項目

          15、windows95:基于 Electron 實現的 Windows 95 操作系統。它實現了該操作系統下的所有東西,對!所有!想體驗下 Windows 95 版的掃雷嗎?下載安裝即可

          Objective-C 項目

          16、LuLu:免費開源的 macOS 防火墻軟件

          PHP 項目

          17、humhub:用 PHP 寫的開源社交平臺。看過《社交網絡》的小伙伴,都知道大名鼎鼎的 Facebook 最早就是扎克伯格用 PHP 語言寫出來的,humhub 能夠讓不會編程的小伙伴也可以用創建出一個社交平臺啦。跟著提示一步步操作,不到 1 分鐘我的社交平臺就建好了

          18、phpbrew:一個編譯、安裝、管理多版本 PHP 的工具。有了它就可以方便地在不同 PHP 版本之間自由切換啦,特性:

        16. 配置選項簡化為 Variants 無需擔心路徑問題
        17. 集成至 bash/zsh 等,易于切換版本
        18. 易于安裝、啟用 PHP 擴展
        19. Python 項目

          19、python-patterns:Python 設計模式和使用場景的集合

          20、pgcli:支持語法高亮和自動補全的 Postgres 數據庫客戶端命令行工具。它安裝簡單上手快速,如果你用過 Postgres 數據庫自帶的命令行工具,就一定能感受到 pgcli 的迷人之處

          21、15-minute-apps:基于 PyQt 框架寫的小型桌面應用程序的集合。想用 Python 寫桌面應用的小伙伴,這個項目應該可以幫到你。比如寫個掃雷游戲:

          Swift 項目

          22、Pine:一個免費、輕量、簡潔的 macOS Markdown 編輯器。功能:

        20. 主題
        21. LaTex 公式
        22. 自動保存
        23. 自定義字體
        24. 字數統計等寫作分析
        25. 等等
        26. 23、Publish:專為 Swift 開發人員準備的靜態網站生成器。讓你實現整個網站都是用 Swift 構建的工具,支持多種主題、插件以及更多強大的自定義選項。示例網站,安裝和快速開始:

          $ git clone https://github.com/JohnSundell/Publish.git
          $ cd Publish
          $ make
          $ mkdir MyWebsite
          $ cd MyWebsite
          $ publish new
          

          其它

          24、open-source-rover:NASA 面向科技愛好者開源的火星漫游車設計方案和代碼。通過該項目你可以使用便宜的樹莓派做出自己的火星漫游車,所需的零件很容易就可以買到,遙控部分是使用現成的 Xbox 手柄或者手機,減少花銷。喜歡動手和硬件的小伙伴們,這個東西夠酷嗎?

          25、bat:替代 cat 的命令行工具。你還在命令行用 cat 查看文件嗎?那你就 out 啦!今天推薦的 bat 它不僅支持語法高亮,還能展示 Git 的改動。macOS 下安裝命令:brew install bat 相信你用過 bat 后就不會再想用回 cat 了

          26、Web-Dev-For-Beginners:微軟開源的 Web 開發教程。該教程共有 24 節課,但目前只有英文版

          27、neofetch:展示操作系統信息的命令行工具,支持將近 150 種操作系統

          28、jpeg_tutorial:教你編寫 JPEG 解碼器的教程,示例為 Rust 代碼

          29、sql-style-guide:一份 SQL 語句編寫風格建議。比如:

          -- Good
          select *
          from users
          where email = 'example@domain.com'
          
          -- Bad
          select *
          from users
          where email = "example@domain.com"
          

          開源書籍

          30、pure-bash-bible:該書有好多復制就能用的 bash 函數,我愿稱其為 bash 的“奇技淫巧”。比如把字母轉為大寫的函數:

          upper() {
              # Usage: upper "string"
              printf '%s\n' "${1^^}"
          }
          
          $ upper "hello"
          HELLO
          

          機器學習

          31、pulse:根據包含馬賽克的人臉圖像,生成一張相似容貌的結果。注意不是復原哦,僅可用于人臉

          32、Surface-Defect-Detection:該項目整理了目前大量靠譜的表面缺陷檢測數據集,還有最新的頂會論文以及作者的解讀筆記。從事視覺方向的小伙伴,心動了嗎?


          最后

          迎留言告訴我本期你最喜歡那個項目,如果覺得本文還不錯的話,就點贊、轉發一波吧~

          rror

          在做php設計以及正則表達式截取字符串時經常遇到亂碼的問題,身邊很多朋友也在問亂碼問題怎么處理。

          所以今天就來寫一個亂碼的處理方式。

          php輸出數據出現亂碼有很多種,這里呢就針對輸出時出現的亂碼進行處理。

          1、先用php來判斷需要輸出的字符串是哪哪種編碼:

          mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));

          該方法會返回數組中的編碼的一種,方便大家查看字符串編碼

          2、根據字符串的編碼,大家選擇相應的顯示編碼即可

          3、如果編碼與輸出頁面的html編碼一致,但是偏偏出現亂碼了,那么也許就是php頁面的問題了,在php頁面頭部加上

          header("Content-Type:text/html;charset=utf-8");

          上述代碼表示該php頁面輸出以及各種操作均為utf-8編碼方式,當然您也可以設置為其他編碼方式.

          如果以上兩步還是解決不了你的亂碼問題,請留言相互探討。


          主站蜘蛛池模板: 日韩视频免费一区二区三区| 中文字幕亚洲乱码熟女一区二区 | 91video国产一区| 国产情侣一区二区| 亚洲AV无码一区二区三区DV| 国产精品无码一区二区在线| 麻豆一区二区在我观看| 无码国产亚洲日韩国精品视频一区二区三区| 国模吧一区二区三区| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲中文字幕乱码一区| 亚洲国产精品一区二区成人片国内| 一区二区三区在线视频播放| 成人免费视频一区| 国产日产久久高清欧美一区| 国产精品免费综合一区视频| 国精无码欧精品亚洲一区| 国内自拍视频一区二区三区| 午夜视频久久久久一区 | 91一区二区视频| 黑人一区二区三区中文字幕| 性色av一区二区三区夜夜嗨 | 日韩十八禁一区二区久久| 午夜福利一区二区三区高清视频 | 日本亚洲成高清一区二区三区| 极品少妇伦理一区二区| 国产精品区一区二区三| 国模大尺度视频一区二区| 精品一区二区久久| 国产一区二区三区小说| 精品国产一区二区三区在线观看| 中文字幕一区二区人妻| 美女视频一区三区网站在线观看| 国产精品无码一区二区在线 | 精品国产一区二区三区免费| 亚洲第一区二区快射影院| 亚洲美女高清一区二区三区| 亚洲国产系列一区二区三区| 国产自产V一区二区三区C| 日本高清无卡码一区二区久久| 亚洲一区中文字幕|