正規表達式的問題

2008-11-03 4:09 am
$patten = "|<.*?a.*?href=\s*?[\'\"](.*?)[\'\"].?>(.*?)<\/.*?a.*?>|i";

我想問的是
第一個直線 | 跟最後一個直線 |
這是什麼意思
好像也有用 這種斜線的 /
最後的一個i是麼意思?
有其他的指令嗎?

回答 (2)

2008-11-03 5:14 am
✔ 最佳答案
| 的意義為「或」。

$pattern=|<.*?a.*?href=\s*?[\'\"](.*?)[\'\"].?>(.*?)<\/.*?a.*?>|i
pattern意義:("")或(連結)或(i)

這個表達式看似非常規的,空字串會被不斷的Match,正確PHP的表達式前後應為斜線。

就字面上來看,應該要表達的是:
Case Insensitive(不理會字母大小寫,這由字母i看出)的正規表達式
<.*?a.*?href=\s*?[\'\"](.*?)[\'\"].?>(.*?)<\/.*?a.*?>

所以正確的表達式為:
$pattern="/<.*?a.*?href=\s*?[\'\"](.*?)[\'\"].?>(.*?)<\/.*?a.*?>/i"
2008-11-07 12:19 am
基本上北極狐說得沒錯,但......preg_match可以用非「/」的符號來包裝正規式。

所以也可以用##、||來包裝正規式,只要前後符號相同就可以。


收錄日期: 2021-04-11 17:15:25
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20081102000015KK09133

檢視 Wayback Machine 備份