我正在学习正则表达式。我有一个非常简单的问题:
我在php中有很长的内容。我想转换它所说的所有地方:
http://www.example.com/en/rest-of-url
到
http://en.example.com/rest-of-url
有人可以帮我这个吗?我想我使用preg_replace吗?
奖励:如果你有一个好的网站的链接,解释如何在正则表达式中做这样的最简单的事情,请发布它。我看到的每个正则表达式资源都非常复杂(甚至维基百科文章)。
答案 0 :(得分:3)
在PHP中:
$search = '~http://www.example.com/([^/]+)/(.+)~';
$replace = 'http://$1.example.com/$2';
$new = preg_replace( $search, $replace, $original );
答案 1 :(得分:2)
有一个很好的正则表达式备忘单和测试人员
答案 2 :(得分:2)
假设:
preg_replace($regex, $replaceWith, $subject);
$ subject是原始文本。 $ regex应该是:
'@http://([^\.]*)\.example\.com/en/(.*)@'
$ replaceWith应该是:
'http://$1.example.com/$2'
已编辑:在我的回答中,我错过了您想要捕获部分域名的事实。
答案 3 :(得分:2)
这适用于任何域名:
$url = 'http://www.example.com/en/rest-of-url';
echo preg_replace('%www(\..*?/)(\w+)/%', '\2\1', $url);
给出:
http://en.example.com/rest-of-url
参考:preg_replace
答案 4 :(得分:2)
您可以了解基本的正则表达式,但是对于您的简单问题,不需要正则表达式。
$str="http://www.example.com/en/rest-of-url";
$s = explode("/",$str);
unset( $s[3]);
print_r( implode("/",$s) ) ;
答案 5 :(得分:1)
这是Regex Tutorials
的绝佳网站