2011-10-08 5 views
1

다음 URL을 가지고 있습니다. http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png url의 모든 내용은 userfiles 부분과 마지막 밑줄을 제외하고 변경할 수 있습니다. 기본적으로 나는 URL의 부분을 얻고 싶다 userfiles/dynamic/images/whatever_dollar_ 이것을하는 좋은 방법은 무엇인가. 나는 열려 있거나 둘 다 JavaScript 또는 PHP.문자열의 특정 부분을 가져옵니다

+0

http://php.net/manual/en/function.parse-url.php – dm03514

답변

5

PHP에서 parse_url을 사용하여 다양한 부분에 URL을 분할합니다. 반환되는 부분은 path입니다. 여기에는 도메인이없는 경로와 쿼리 문자열이 포함됩니다.

그런 다음 strrpos을 사용하여 경로 내에서 _의 최종 출현을 찾으십시오.

substr을 사용하면 경로의 첫 번째 부분 (_이 발견 될 때까지)을 복사 할 수 있습니다. 당신의 문자열을 가정

+3

다른 옵션 : – FailedDev

+0

감사 Parse_url 및 PHP_URL_PATH이 훌륭가있는 경우 URL에 대한 정규식을 사용하여 일하지 마십시오. 왜 URL에 정규식을 사용하지 마십시오 ??? regexp 방식을 사용하는 것이 더 효율적으로 보입니다. – Pinkie

+1

정규식은 이와 같은 작업에서 거의 효율적이지 않습니다. 이 문제에 대해 두 줄 또는 세 줄의 코드를 저장할 수 있다고하더라도 화면 뒤에서 복잡한 복잡한 작업이 포함 된 복잡한 구문 분석기를 시작하게됩니다. 그리고이 간단한 경우 regexes는 몇 가지 간단한 함수보다 읽기 쉽지 않은 경우가 종종 있습니다. 그러나 정규 표현식으로 URL을 파싱하는 것이 정규 표현식으로 XML을 파싱하는 것만 큼 나쁘지는 않습니다. :) – GolezTrol

1

은 단순히 $ s의에 저장됩니다

echo preg_replace('/.*(userfiles.*_).*/', '$1', $s); 
+0

이봐,이 작품. 왜 그것을 다운 그레이드 했는가? – Pinkie

3

당신은, 자바 스크립트, 시도 할 수 :

var string = "http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png"; 

var newString = string.substring(string.indexOf('userfiles'),string.lastIndexOf('_')); 
alert(newString); // returns: "userfiles/dynamic/images/whatever_dollar" (Without quotes). 

JS Fiddle demo.

참고 :

관련 문제