1

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

在这个情况下:

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。

谢谢。

4

3 回答 3

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&getval2=2&etc=etc

输出

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

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

)
于 2013-03-22T14:45:49.443 回答
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包含您的 ID

于 2013-03-22T14:42:04.533 回答
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= 之前的数字。

于 2013-03-22T14:46:09.630 回答