2012-08-31 72 views
0

我需要使用正則表達式來搜索一個字符串並修復某些URL。我需要從鏈接中刪除開始/像這樣的:PHP的正則表達式來修復網址

/admin.somedomain.com或/somedomain.com

還有很多其他的絕對URL,所以我不能只是剝離出任何領先/字符。 任何幫助將不勝感激。

這是處理用戶輸入的文本,通常來自TinyMCE的HTML,但有時來自純文本框有和沒有其他HTML(或我會處理它不同,並直接處理鏈接,而不是必須先爲他們搜索字符串) 。不幸的是,有時網址正確輸入了A HREF或IMG SRC等

我確實希望像 「/image.jpg」 「/ web應用/ GETFILE?ID = 3354」

但不喜歡的鏈接鏈接 「/somedomain.com」 「/admin.somedomain.com」

這裏是文字的一個例子,我可能需要清理

<p><a href="/webapp/GetFile?id={2C59BC2D}"><img src="/wahelper/GetImage?id=308" alt="" width="100" height="100" /></a></p> <p><a href="/admin.somedomain.com">test</a></p> 
+0

你真的需要的正則表達式其他國家頂級域名工作? – woz

+0

除非有另一種方式來做到這一點。我樂於接受建議。 – jncw

+0

正則表達式可能部分是您的解決方案,但總體而言,我認爲正則表達式不會成爲您的最終目標。除非你能想出一些嚴重錯綜複雜的事情。我可能會採取這種方法,我會對所有存儲的網址進行比較。也許在':'分開它們,然後取第一個塊,看看是否有多個'/'在哪裏存在,讓它獨立,然後在沒有刪除第一個字符的情況下,如果該字符是'/' – chris

回答

0

哎呀,這樣艱難的時刻得到一個SIM卡正則表達式。試試這個:

$str = preg_replace("/^\/((?:admin\.)?[^.]+.(?:com|net|other_TLD_you_want))/i", "http://$1", $str); 

請注意,我實際上http://替換/,因爲這真的是你想要的東西,如果你想要的鏈接工作。如果你只是剝離/,那麼鏈接將最終成爲當前目錄中名爲admin.somedomain.com的本地文件的鏈接 - 這可能不是你想要的。

另請注意,您可能需要更多的頂級域名,而不僅僅是comnet - 根據需要添加它們。

另外請注意,這不會像co.uk