Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式/php更改url格式_Php_Regex_Preg Replace - Fatal编程技术网

正则表达式/php更改url格式

正则表达式/php更改url格式,php,regex,preg-replace,Php,Regex,Preg Replace,我的任务是更新一个相当丑陋、过时的网站,该网站有数百个城市的信息,所有这些城市都位于自己的子域中,例如: london.sitedomain.com 计划是删除所有这些子域,并以以下格式将站点正确设置为页面: sitedomain.com/london 不幸的是,有大量硬编码列表组成了一个下拉菜单,看起来像这样(但有数百个): 如果我将这个巨大的列表设置为一个php字符串,是否有一种像样的方法可以将每个子域子字符串批量更改为正确的格式,如上所述?或者有更好的解决方案吗?您可以做的一件事是,分

我的任务是更新一个相当丑陋、过时的网站,该网站有数百个城市的信息,所有这些城市都位于自己的子域中,例如:

london.sitedomain.com

计划是删除所有这些子域,并以以下格式将站点正确设置为页面:

sitedomain.com/london

不幸的是,有大量硬编码列表组成了一个下拉菜单,看起来像这样(但有数百个):



如果我将这个巨大的列表设置为一个php字符串,是否有一种像样的方法可以将每个子域子字符串批量更改为正确的格式,如上所述?或者有更好的解决方案吗?

您可以做的一件事是,分解并获取第一个字符串,然后将其与剩余字符串(包括/

)一起附加,如果链接是动态的(即,不是硬编码的),您可以做的一件事是,分解并获取第一个字符串,然后将其与剩余字符串(包括/

)一起附加,更改它们分配给HTML模板的方式。以下方面应起作用:

$newurl = preg_replace("#(?:https?://)?(\w+)\.sitedomain\.com/(.*)#i", "sitedomain.com/$1/$2", $oldurl);
如果链接是静态的,请使用任何高级文本编辑器(Notepad++、Gedit、TextMate等),然后选择
搜索并替换
。上面的
preg\u replace
的第一个参数用于
搜索
字段,第二个参数用于
replace
如果链接是动态的(即非硬编码),请更改它们分配给HTML模板的方式。以下方面应起作用:

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

如果链接是静态的,请使用任何高级文本编辑器(Notepad++、Gedit、TextMate等),然后选择
搜索并替换
。上面
preg\u replace
的第一个参数用于
Search
字段,第二个参数用于
replace

我认为最好在记事本++或升华文本之类的程序中使用搜索和替换。两者都可以进行正则表达式搜索和替换文件夹(以及子文件夹)。我认为对于大量硬编码链接而言,PHP不是最好的解决方案(这是可以做到的,但这样做更简单、更可靠)

使用以下正则表达式:

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

您可以在PHP中使用这些搜索和替换字段来实现这一点,但是如果您只需要更改一组HTML文件,那么我认为使用文本编辑器会更好。

我认为您最好在Notepad++或Sublime text之类的程序中使用搜索和替换。两者都可以进行正则表达式搜索和替换文件夹(以及子文件夹)。我认为对于大量硬编码链接而言,PHP不是最好的解决方案(这是可以做到的,但这样做更简单、更可靠)

使用以下正则表达式:

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

您可以在PHP中使用这些搜索和替换字段来实现这一点,但是如果您只需要更改一组HTML文件,那么我认为使用文本编辑器会更好。

我建议您使用另一种方法,并使用.htaccess中的reg exp自动完成此过程。这样你就不需要写那么大的清单了

大概是这样的:

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

这将抓取www(如果有),然后抓取子域并将子域附加到url

我建议您使用另一条路径,并使用.htaccess中的reg-exp将过程自动化。这样你就不需要写那么大的清单了

大概是这样的:

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

这将抓取www(如果有),然后抓取子域并将子域附加到url中

有什么问题?创建文件,在php中实现一个5行算法,将每个文件分解成它的标记,并按照您喜欢的方式重新组装标记,然后逐行将它们写入输出文件。你可以随时尝试,直到得到你想要的结果。有什么问题?有什么问题?创建文件,在php中实现一个5行算法,将每个文件分解成它的标记,并按照您喜欢的方式重新组装标记,然后逐行将它们写入输出文件。你可以随时尝试,直到得到你想要的结果。有什么问题吗?谢谢。我在这个地球上生活了多久了&没有意识到我可以在我的文本编辑器中做到这一点?呸!您错过了1前面的$符号,可能需要添加该符号。再次感谢汉克斯。我在这个地球上生活了多久了&没有意识到我可以在我的文本编辑器中做到这一点?呸!您错过了1前面的$符号,可能需要添加该符号。再次感谢