搜索
熱搜: 活動 交友 discuz
查看: 4787|回復: 0
打印 上一主題 下一主題

[PHP] [PHP]preg_match 正規表示式比對使用介紹 (取代eregi/ereg) (進階strpos)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-9-6 17:05:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
preg_match 進行正則表示式比對資料
  1. int preg_match ( string pattern, string subject [, array matches [, int flags]] )
複製代碼
程式會在 string subject 中進行比對是否有符合 string pattern 條件的結果

很多人剛開始使用 preg_match 都蠻不了解其正規的用法,其實就算不完全了解正規的用法也是可以了解 preg_match 初階的使用方式,基本觀念就是給一個字串讓 preg_match 去幫你比對出符合條件的部分,透過幾個範例應該就能上手。



範例一、用 preg_match 單純的找出是否符合條件
  1. if (preg_match("/1/i", "12345")) {
  2.     echo "條件符合";
  3. } else {
  4.     echo "條件不符合";
  5. }
複製代碼
這個範例會顯示條件符合。其中 i 表示不區分大小寫。



範例二、用 preg_match 找出完全符合的字母
  1. if (preg_match("/\bdef\b/i", "abcdefg")) {
  2.  echo "條件符合";
  3. } else {
  4.  echo "條件不符合";
  5. }
複製代碼
這個範例會顯示條件不符合。其中 \b 所代表的意思是完全符合才算數,也就是說字串 abcdefg 中必須要有獨立的 def 才算符合,以目前狀況來說 abcdefg 全部黏在一起,所以並不符合,我們可以做個修改
  1. if (preg_match("/\bdef\b/i", "abc def g")) {
  2.  echo "條件符合";
  3. } else {
  4.  echo "條件不符合";
  5. }
複製代碼
這樣子就會輸出條件符合!



範例三、用 preg_match 找出網址的部分
  1. preg_match('@^(?:http://)?([^/]+)@i',"http://www.webtech.tw", $matches);
  2. $host = $matches[1].'';
  3. echo   $host;
複製代碼
這樣會輸出 www.webtech.tw,preg_match 先比對條件符合的結果,再把他放到 matches 陣列中,如果你輸出 matches 陣列會看到這樣

Array ( [0] => http://www.webtech.tw [1] => www.webtech.tw )

接著我們再利用 preg_match 去取得 webtech.tw 這樣的結果
  1. preg_match('/[^.]+\.[^.]+$/', $host, $matches);
  2. echo $matches[0];
複製代碼
這樣就順利找到咱們的 domain name 囉!



範例四、用 preg_match 驗證E-Mail格式
  1. $email = "abc123@lolhaha.com";
  2. $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
  3. if (preg_match($regex, $email)) {
  4.      echo $email . " is a valid email. We can accept it.";
  5. } else {
  6.      echo $email . " is an invalid email. Please try again.";
  7. }
複製代碼
結果為true。



只是比對字串,就用 strpos()

如果只是要純粹比對字串,那就用 strpos() 就好,殺雞別用牛刀~

strpos

strpos() 函數返回字符串在另一個字符串中第一次出現的位置。
如果沒有找到該字符串,則返回false。

語法:
  1. stripos(string,find,start)
複製代碼
範例:
  1. <?php
  2. echo stripos("Hello world!","WO");
  3. ?>
複製代碼
輸出:6

另外,既然 strpos() 是從頭找,想從尾找就用 strrpos()
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-5-21 21:54 , Processed in 0.032354 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表