2012-07-28 30 views
0

我一直在考慮更新比較難看,過時網站的任務,那對數百個城市,所有這些都坐在自己的子域名信息,例如:正則表達式/ PHP的改變URL格式

london.sitedomain.com

該計劃是爲了擺脫所有這些子域,並正確設置站點的頁面,格式如下:

sitedomain.com/london

不幸的是,有腫塊,硬編碼列表組成一個下拉菜單,看起來像這樣(但有數百個):

<a href="http://sydney.sitedomain.com">Sydney</a> 
<a href="http://auckland.sitedomain.com"> Auckland</a> 
<a href="http://melbourne.sitedomain.com"> Melbourne</a> 
<a href="http://perth.sitedomain.com"> Perth</a> 
<a href="http://wellington.sitedomain.com"> Wellington</a> 

如果我把這個巨大的名單了作爲一個PHP字符串,如上所述,是否有一種體面的方式可以將每個子域的子字符串批量更改爲正確的格式?還是有更好的解決方案,你可以想到?

+0

問題是什麼?創建文件,在php中實現一個5行算法,將每個文件分解爲它的標記,然後按照你喜歡的方式重新組裝標記,並逐行將它們寫入輸出文件。你可以隨心所欲地嘗試,直到你有你想要的結果。問題是什麼 ? – arkascha 2012-07-28 13:54:48

回答

2

我想你會更好的使用搜索和替換像記事本++或崇高文本的程序。兩者都可以進行正則表達式搜索並替換一個文件夾(和子文件夾)。我不認爲PHP會是一堆硬編碼鏈接的最佳解決方案(它可以完成,但更容易,更可靠這種方式)

使用下面的正則表達式:

search: http://(.*?)\.sitedomain.com 
replace: http://sitedomain.com/\1 

可以可能做到這一點在PHP與搜索和替換字段,但如果你只需要改變一堆的HTML文件,然後我認爲使用文本編輯器要好得多。

+0

謝謝。我在這個世界上生活了多久,還沒有意識到我可以在我的文本編輯器中做到這一點?呸!您在1之前錯過了$符號,可能想補充一點。再次感謝 – 2012-07-28 14:14:04

0

一兩件事你可以做的是,爆炸並獲得第一個字符串,並與其餘的包括/

1

如果你的鏈接是動態的(即不是硬編碼)追加它,改變他們被分配到的方式HTML模板。下面應該工作:

$newurl = preg_replace("#(?:https?://)?(\w+)\.sitedomain\.com/(.*)#i", "sitedomain.com/$1/$2", $oldurl); 

如果你的鏈接是靜態的,使用任何先進的文本編輯器(記事本++,Gedit的,TextMate的,等等),並挑選Search and Replacepreg_replace以上的第一個參數爲Search字段,第二個爲Replace

0

我建議你進入不同的路線,並通過在.htaccess中使用reg exp自動化過程。你並不需要,甚至寫大名單

像這樣那樣:

RewriteCond %{HTTP_HOST} ^((www\.)?[^.]+)\.sitedomain\.com.*$ 
RewriteRule (.*) http://sitedomain.com/%1 [L] 

這會搶了WWW(如果有的話),然後將子域和子域添加到URL,