程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php使用正則表達式獲取字符串中的URL,正則表達式url

php使用正則表達式獲取字符串中的URL,正則表達式url

編輯:關於PHP編程

php使用正則表達式獲取字符串中的URL,正則表達式url


今天寫一個問答系統上線之後發現有很多人發鏈接了,由於業務部門要我們過濾掉網站地址了,下面我給大家分享一個提取字符串url地址函數,代碼如下:

$str ='本文實例講述了php匹配字符串裡所有URL地址的方法。http://www.manongjc.com 分享給大家供大家參考'; 
 preg_match_all("/http:[\/]{2}[a-z]+[.]{1}[a-z\d\-]+[.]{1}[a-z\d]*[\/]*[A-Za-z\d]*[\/]*[A-Za-z\d]*/",$str,$array2); 
print_r($array2); 

運行結果為:

( 
  [0] => Array 
    ( 
      [0] => http://www.manongjc.com 
    ) 
)

這裡主要使用到preg_match_all函數,該函數具體使用方法如下:

preg_match_all — 進行全局正則表達式匹配

語法:

int preg_match_all ( string pattern, string subject, array matches [, int flags] )

在 subject 中搜索所有與 pattern 給出的正則表達式匹配的內容並將結果以 flags 指定的順序放到 matches 中。
搜索到第一個匹配項之後,接下來的搜索從上一個匹配項末尾開始。

特別注意PREG_PATTERN_ORDER 和PREG_SET_ORDER

flags 可以是下列標記的組合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起來用沒有意義):

如果使用PREG_PATTERN_ORDER

對結果排序使 $matches[0] 為全部模式匹配的數組,$matches[1] 為第一個括號中的子模式所匹配的字符串組成的數組,以此類推。(即$matches[0] [0]為全部模式匹配中的每一項,$matches[0] [1]為全部模式匹配中的第二項,$matches[1] [0]為匹配每一個括號中的第一項,$matches[1] [0]為匹配每一個括號中的第二項)

<?php 
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER);
/* http://www.manongjc.com/article/1591.html */
print $out[0][0].", ".$out[0][1]."\n"; 
print $out[1][0].", ".$out[1][1]."\n"; 
?> 

輸出結果:

<b>example: </b>, <div align=left>this is a test</div> 
example: , this is a test

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved