2

我正在尝试获取 url 中的最后一个整数,我正在使用 php explode 给出 / 之后的最后一个值,但我不知道如何获取 / 之前的最后一个整数

我的网址是

    http://way2enjoy.com/touch/w2et/quotesalphalist.php?page=124/ABCD

我有兴趣从上述网址获取 124。

我可以用下面的爆炸代码得到最后一个值 ABCD 但不知道如何得到 124

    $c=explode("/",$_SERVER[ 'REQUEST_URI' ]);  $city=end($c); 

请建议如何从上面的 url 中获取 124 之类的整数。请注意,这个 124 可能会更改为任何数字,但它始终是数字并且就在最后 /

4

6 回答 6

2

这可能不是正则表达式的工作,而是您选择的语言的现有工具。 正则表达式不是你在碰巧涉及字符串的每个问题上挥舞的魔杖。您可能希望使用已经编写、测试和调试过的现有代码。

在 PHP 中,使用该parse_url函数。

Perl:URI模块

红宝石:URI模块

.NET:“Uri”类

于 2013-08-23T19:05:49.913 回答
1
$c = explode('=',$_SERVER[ 'REQUEST_URI' ]);
$result = explode('/', end($c));
echo $result[0];
于 2013-08-23T18:56:41.710 回答
0
<?php
    $digit = explode("/", $_GET['page']);
    echo $digit[0];
    /// or using preg_match
    preg_match("/(\d+)\//", $_GET['page'], $matches);
    echo $matches[1];
于 2013-08-23T19:01:53.090 回答
0

使用 $_GET:

$page = explode('/',$_GET['page']);
echo $page[0]; // 124


$_GET['page'] = "124/gea2ABC23gaga1D";
echo (int) $_GET['page']; // 124

使用请求 URI:

$_SERVER[ 'REQUEST_URI' ] = 'http://way2enjoy.com/touch/w2et/quotesalphalist.php?page=124/ABCD42141';

if(preg_match("/page=(\d+)/",$_SERVER[ 'REQUEST_URI' ],$matches)){
    echo $matches[1];
}

如果参数的第二部分有数字,不推荐:

$_GET['page'] = "124/gea2ABC23gaga1D"; // -> 1242231 !
echo preg_replace("/[^0-9]/", "" , $_GET['page']); 
于 2013-08-23T19:21:28.923 回答
0

我没有方便的 PHP 安装来测试这个,但只要数字在 last 之前/,那么这样的东西应该可以工作:

$string = "http://way2enjoy.com/touch/w2et/quotesalphalist.php?page=124/ABCD"
$matches = array();

if(preg_match("/(\d+)\/[^/]+$/",$string,$matches)){
  echo $matches[1] . "\n";
}
else{
  echo "Not matched!\n";
}
于 2013-08-23T18:55:34.277 回答
0

您将要使用parse_urlparse_str

// Parse the URL into its components
$url = parse_url($_SERVER['REQUEST_URI']);

// Parse the query string into the $out array
parse_str($url['query'], $out);

// Echoes out `124/ABCD`
echo $out['page'];

如果您只想获取数字部分,则可以preg_replace在字符串上快速运行。

// Echoes `124`
echo preg_replace("/[^0-9]/", "" , $out['page']);
于 2013-08-23T19:04:30.230 回答