2010-02-15 3 views
2

정규 표현식을 배우고 있습니다.url 경로의 lang을 하위 도메인으로 변경하는 정규식

http://www.example.com/en/rest-of-url 

http://en.example.com/rest-of-url 

수있는 누군가의 도움

에 : 그것이 말하는 어디 모든 장소를 변환하고 싶습니다 php.I 콘텐츠의 긴 문자열이

: 나는 아주 간단한 질문이 있습니다 이걸로 나? 나는 이것을 위해 preg_replace를 사용한다고 생각합니까?

보너스 : 정규식에서 이와 같이 간단한 작업을 수행하는 방법을 설명하는 좋은 사이트에 대한 링크가있는 경우 게시하십시오. 내가 보는 모든 정규식 리소스는 매우 복잡합니다 (위키피디아 기사조차도).

답변

3

$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

2

있습니다

preg_replace($regex, $replaceWith, $subject); 

$ subject는 원문입니다. $ 정규식은 다음과 같아야합니다

'@http://([^\.]*)\.example\.com/en/(.*)@' 

$ replaceWith가 있어야한다 :

'http://$1.example.com/$2' 

편집 : 내 기존 이메일 대답에, 나는 당신이 도메인 이름의 일부를 캡처하고 싶어한다는 사실을 놓쳤다.

$search = '~http://www.example.com/([^/]+)/(.+)~'; 
$replace = 'http://$1.example.com/$2'; 
$new = preg_replace($search, $replace, $original); 
+0

구분 기호에'/'대신 다른 문자를 사용하면 정규식을 더 쉽게 이해할 수 있습니다. – DisgruntledGoat

2

이 어떤 도메인 이름과 함께 작동합니다 : PHP에서

2

배울 수 있습니다 asic 정규식, 그러나 간단한 질문에 대한 정규식에 대한 필요가 없습니다.

$str="http://www.example.com/en/rest-of-url"; 
$s = explode("/",$str); 
unset($s[3]); 
print_r(implode("/",$s)) ; 
관련 문제