2014-05-12 2 views
2

로 URL에서 첫 번째 디렉토리를 가져 오기 :이 같은 변수에 URL을 PHP

$url = 'http://mydomain.com/yep/2014-04-01/some-title'; 

그리고 내가 원하는 것은에서 '네'부분을 구문 분석하는 것입니다. 나는 이것을 다음과 같이 시도한다 :

$url_folder = strpos(substr($url,1), "/")); 

그러나 어떤 이유로 어떤 숫자가 반환된다. 내가 뭘 잘못 했니?

답변

6

사용 explode이 시도 :

$url = 'http://mydomain.com/yep/2014-04-01/some-title'; 
$urlParts = explode('/', str_ireplace(array('http://', 'https://'), '', $url)); 
echo $urlParts[1]; 

Demo Link

+0

URL이 'www.domain.com/yep/2014-04-01/some-title' 인 경우 어떻게됩니까? –

+0

네,이 트릭을 할 것으로 보인다. 감사. 그리고 나는 그 부분이 폭발하기 때문에 www가 중요하지 않다고 믿는다. – user995317

+0

@ShankarDamodaran 대답이 그걸 처리하기 위해 업데이트되었다. –

1

음, 먼저 모든 substr(...,1)의 위치 1. 후 모든게으로 돌아갑니다 그래서 당신이 원하는 게 아니에요.

그래서 http://mydomain.com/yep/2014-04-01/some-title은 (ttp://mydomain.com/yep/2014-04-01/some-title의 첫 번째 / 될) ...

ttp://mydomain.com/yep/2014-04-01/some-title 그런 다음 첫 번째 /을 찾고, 위치 1 일 이후 모든게에 strpos을하고있다가된다. strpos() 함수는 그 위치 (번호)를 반환합니다. 그래서 그것은 당신에게 숫자 4를 돌려 보내고 있습니다.

오히려 당신은 explode()을 사용

$parts = explode('/', $url); 
echo $parts[3]; // yep 
// $parts[0] = "http:" 
// $parts[1] = "" 
// $parts[2] = "mydomain.com" 
// $parts[3] = "yep" 
// $parts[4] = "2014-04-01" 
// $parts[4] = "some-title" 
0

사용 parse_url 기능을.

$url = 'http://mydomain.com/yep/2014-04-01/some-title'; 
$url_array = parse_url($url); 
preg_match('@/(?<path>[^/]+)@', $url_array['path'], $m); 
$url_folder = $m['path']; 
echo $url_folder; 
관련 문제