2010-10-25 84 views
0

我需要用嵌入的Flash對象替換某些用戶輸入的URL ......並且我用於匹配url的正則表達式遇到問題...我認爲主要是因爲URL是搜索引擎友好,所以有點難度解析preg_replace的正則表達式檢測URL格式並提取元素

URL structure: http://www.site.com/item/item_title_that_can_include_1('_etc-32CHARACTERALPHANUMERICGUID 

我需要在兩個檢測匹配該格式的URL和捕捉32CHARACTERALPHANUMERICGUID它總是放在後 - 中網址

這樣的事情:

$ret = preg_replace('#http://www\.site\.com/item/([^-])-([a-zA-Z0-9]+)#','<embed>itemid=$2</embed>', $ret); 

由於某些原因,上述內容找不到指定格式的URL匹配項。我對正則表達式很陌生,所以我認爲我錯過了一些相當明顯的東西。

回答

2

您應該檢查出parse_url()

檢查結果 - 它是用於解析URL的。您將能夠從返回的令牌中提取所需的數據。

如果你是正則表達式瘋了,試試這個...

/^http:\/\/www\.site\.com\/item\/[^-]*\-([a-zA-Z0-9]{32})$/ 

你舉的例子是幾乎沒有, ...

  • 當你做的不是字符範圍,即[^-] ,你仍然需要一個量詞。我放置了*0或更多
  • 您似乎沒有使用項目標題,所以我們不會打擾捕獲它。
  • 如果字符串總是與此類似,則應使用開頭(^)和結束($)錨。
  • 你說GUID是32個字符,所以我們不妨明確指出用{32}量詞。
+0

亞歷克斯,你是男人。這工作完美。感謝一幫人的幫助。 – byron 2010-10-25 02:07:12