2011-08-29 7 views
0

버튼과 같은 facebook을 위해 PHP에서 URL을 구문 분석해야합니다. 내가 지금 할 것은 이것이다 :어떻게 PHP로 URL을 구문 분석합니까

<?php 
    echo curPageURL(); 
?> 

그러나 나는 등의 버튼이 문서의 첫 페이지가되도록 내가 페이지 번호없이 URL을 구문 분석 할 그래서 때로는 두 개 또는 세 개의 페이지가 긴 기사를 . 페이지 번호가없는 경우도 있습니다.

내 URL이 끝이 http://www.mydomain.com/23/My-Article-Title/2/

2처럼 보이는 것은 문서의 2 페이지를 1 페이지를 나타내는 페이지 번호는 다음과 같이 나타납니다하지만

http://www.mydomain.com/23/My-Article-Title/

가 어떻게 해석 않는 PHP가 존재한다면 페이지 번호를 제거하는 url?

페이지 번호가 있으면 구문 분석 만하고 싶습니다.

답변

1
preg_replace('=\d+/$=', '', $url); 
+0

내가 한 어떤 것보다 더 나을 이유를 알고 정규 표현식에 대해 충분히 모르는 일 것이다 주어진 모든 답변을 확신 다른. 그러나이 대답은 가장 간결했으며 내가 찾고있는 것을하는 것처럼 보입니다. 그래서 저는 그것을 답으로 표시 할 것입니다. – Early73

+0

@ 이얼리 : 귀하의 URL이 'http : // www.mydomain.com/23/Review-Of-Rambo-8 /'이라면? – webbiedave

+0

@webb'preg_replace ('=/\ d +/$ =', '/', $ url);' – powtac

1

당신은 preg_replace와 정규 표현식을 사용할 수 있습니다

echo preg_replace('#/[0-9]+(/)?$#', '/', 'http://www.mydomain.com/23/My-Article-Title/34/'); 

// output: http://www.mydomain.com/23/My-Article-Title/ 

위의 정규식은 URI의 끝에 나타나는 / + numbers + (optional) /을 제거합니다.

0

한번에 사용하기 :

preg_replace('/^(.+[a-zA-Z]\/)[\d]*\/?$/i', '\\1', $str); 
0
$url = 'http://www.mydomain.com/23/My-Article-Title/2/'; 
$url_info = parse_url($url); 
$pathes = (empty($url_info['path']) ? array() : explode('/', trim($url_info['path'], '/'))); 

if (($len = count($pathes)) > 0 && is_numeric($pathes[$len-1])) 
{ 
    echo "<pre>"; 
    print_r($pathes); 
    echo "</pre>"; 
} 
?> 
관련 문제