获取动态网址的一部分

时间:2013-03-22 14:35:11

标签: php regex

我正在尝试在我的网站上获取网址的一部分

在这种情况下:

http://mywebsite/filexx/yyyyy/abaete/374    

$url2 = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

if(preg_match("/\/(\d+)$/",$url2,$matches))
{
    $meuid = $matches[1];
}

它的作品,但让我们提出两种不同的情况:

http://mywebsite/filexx/yyyyy/abaete/374/?p=1
// i'm try to get the 374 (ID)

http://mywebsite/filexx/yyyyy/374/?p=1
// here the same

所以我想得到整数的最后一部分(374) 或查询前的部分374 /?p = 1。所以我想要374。

感谢。

3 个答案:

答案 0 :(得分:1)

我只是回答我的评论:

<?php
    $string = 'http://mywebsite/filexx/yyyyy/abaete/374/?g=123';
    $matches = array();

    preg_match_all('/.*?\/(\d+)\/?/s', $string, $matches);

    echo '<pre>';
    print_r($matches);
    echo '</pre>';
?>

它也会忽略/?getval1 = 1&amp; getval2 = 2&amp; etc = etc

<强>输出

Array
(
    [0] => Array
        (
            [0] => http://mywebsite/filexx/yyyyy/abaete/374/
        )

    [1] => Array
        (
            [0] => 374
        )

)

答案 1 :(得分:0)

$url = 'http://mywebsite/filexx/yyyyy/abaete/374/?p=1';

$explodedUrl = explode('/',$url);
$countArray = count($explodedUrl);
if(strpos($explodedUrl[$countArray-1],'?') === FALSE){
    $yourId = $explodedUrl[$countArray-1];
} else {
    $yourId = $explodedUrl[$countArray-2];
}

$yourId包含您的身份

答案 2 :(得分:0)

http://mywebsite/filexx/yyyyy/abaete/374    

$url2 = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

if(preg_match('~([0-9]+)\/\?p=~', $url2, $matches))
{
    $meuid = $matches[1];
}

这得到/?p =。之前的数字。