2009-10-10 3 views
0

나는 정규 표현식에서 그렇게 나쁘지 해요,하지만 난 http://somepage.com/some/...etcsome/path/image.jpg을 얻으려고 노력하고이 방법을 시도하고있다 :PHP에서 URL의 도메인 부분을 어떻게 일치시킬 수 있습니까?

function removeDomain($string) { 

    return preg_replace("/http:\/\/.*\//", "", $string); 

} 

그것은 작동하지 않는 - 나는 그냥 반환이야 말할 수있는 지금까지 빈 문자열. 이 정규 표현식은 어떻게 작성합니까?

답변

5

당신은 당신이 정규식보다는 이것을 사용 할 수 있습니다 parse_url

+0

완벽한까지 일치합니다, 감사합니다 –

1

사용에 대한 결과 배열을 읽을 수 있도록이, 당신의 URL을 깨뜨릴 parse_url 다른 사람들이 이미 말했듯이. 당신의 정규식이 작동하지 않는 이유 .* 아무것도 일치하기 때문에 그것이 전체 URL을 일치, 실제로는 약 귀하의 질문에 대답 할 수 있지만

. 전체 URL이이고 일치하는 문자열이 빈 문자열로 바뀝니다. .

SilentGhost 잘하지만
function removeDomain($string) { 
    return preg_replace("@^https?://[^/]+/@", "", $string); 
} 
1

, 당신의 정규식이 실패하는 이유는 * 욕심 때문입니다 먹고합니다 모든 : 만 (첫 번째 '/'아무것도 업) 호스트 이름을 일치되는 대신 다음을 시도 나중에 /이있는 한. 당신이 당신의 .*?마르크을 넣으면

, 그것은 첫 번째 /

function removeDomain($string) { 

    return preg_replace("/http:\/\/.*?\//", "", $string); 

} 
관련 문제