我如何用PHP解析一个网址

时间:2011-08-29 21:53:49

标签: php parsing url

我需要在php中解析一个像facebook这样的按钮的URL。我现在做的是:

<?php
  echo curPageURL();
?>

但是我的文章有时会长2到3页,所以我想解析没有页码的网址,以便类似按钮用于文章的第一页。有时页码也不存在。

我的网址看起来像http://www.mydomain.com/23/My-Article-Title/2/

最后的2是指示第2页的页码。文章的第1页虽然看起来像

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

如何解析php中的url以删除页码(如果存在)?

所以如果有页码,我只想解析它。

4 个答案:

答案 0 :(得分: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) /

答案 1 :(得分:1)

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

答案 2 :(得分:0)

尝试使用:

 preg_replace('/^(.+[a-zA-Z]\/)[\d]*\/?$/i', '\\1', $str);

答案 3 :(得分: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>";
}
?>