2011-07-14 137 views
-1

編輯: 對不起,我沒有很清楚我的第一篇文章。好吧,我有文本存儲在數據庫中,我喜歡處理它,並尋找到我的網站上的產品的任何鏈接,並把它們變成一個奇特的鏈接。以下是2個鏈接和我目前的經驗。第二個鏈接(Link2)按預期工作,並將值21傳遞給DetailsLink()我的問題在於Link1,它將2的值傳遞給Details()而不是21。我想完全忽略url,因爲details()會重新創建與產品評分/ cat等鏈接。它也應該在http或https鏈接上工作。preg_match ID中的URL

鏈接1:http://192.168.2.22/dev/details.php?id=21 鏈路2:$地址http://192.168.2.22/dev/details.php?id=21&module=info#Desc

$s = preg_replace("%(?<![=\]\'\"\w])https?://[^<>\s\'\",]*$ADDRESS\/details\.php\?id=([0-9]+)[^<>\s\'\",]+%ie", "detailsLink(\\1)", $s); 

值192.168.2.22/dev

+1

請不要使用電子(VAL)修改但使用'preg_replace_callback'來代替。 – ThiefMaster

+0

請不要用正則表達式重新發明輪子。 PHP中已經有了解析URL的query-info-part的函數。參見['parse_url'](http://php.net/manual/en/function.parse-url.php)。 – hakre

回答

1

我不明白。你爲什麼不使用$_GET['id']

編輯:沒關係。我從來不知道這些功能! (parse_url,這是)

+0

可能因爲它不是當前頁面的URL。 – ThiefMaster

+0

這就是我原先的想法,但問題的措辭非常混亂。 –

+0

對不起,我非常清楚,這是一些用戶發佈的文本存儲在數據庫中,即時處理顯示在網站上,我想將文本中找到的任何產品鏈接轉換爲一個奇特的鏈接。 – Vibes

5

沒有必要重新發明輪子:

$url="http://192.168.2.22/dev/details.php?id=21&module=info#Desc"; 

parse_str(parse_url($url,PHP_URL_QUERY), $arr); 

print_r($arr); 

爲您提供:

Array 
(
    [id] => 21 
    [module] => info 
) 

parse_str() parse_url()

+0

對不起,我很不清楚,iv編輯我的問題 – Vibes