[問題] 用 preg_match 找出網址的部分

看板RegExp (正規表示式 Regular Expression)作者 (沒事就好)時間10年前 (2014/10/05 13:24), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
php 看了一下網路的範例照著做了一下 $url_array = array(); $url_array[] = 'http://taitung.taitungminsu.com.tw/bnb/holiday.htm'; $url_array[] = '../ok.htm'; $url_array[] = 'http://taitung.taitungminsu.com.tw/bnb/mary.htm'; $url_array[] = 'http://taitung.taitungminsu.com.tw/bnb/gdws.htm'; foreach ($url_array as $url_value) { preg_match('@^(?:http://)?([^/]+)@i',$url_value, $matches); $host = $matches[0].''; echo $host."<br ./>"; } 這樣印出來會是 http://taitung.taitungminsu.com.tw .. http://taitung.taitungminsu.com.tw http://taitung.taitungminsu.com.tw 這個 ../ok.htm 會留下 前面的 .. 要怎麼修改,讓這個 ../ok.htm 不會出來呢 ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.198.188.68 ※ 文章網址: http://www.ptt.cc/bbs/RegExp/M.1412486698.A.53C.html

10/05 17:00, , 1F
@^(?:http://)? << 把最後的 ? 拿掉就好了
10/05 17:00, 1F

10/05 22:12, , 2F
'@^(?:http://)([^/]+)@i' 變這樣 ? 這樣會有錯
10/05 22:12, 2F

10/06 03:30, , 3F
會抓到 wrong case?
10/06 03:30, 3F

10/06 22:13, , 4F
http://[^/]+就夠了吧
10/06 22:13, 4F
文章代碼(AID): #1KCDOgKy (RegExp)
文章代碼(AID): #1KCDOgKy (RegExp)