2012-07-28 42 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,