我正在尝试获取url中的最后一个整数,我正在使用php爆炸,它给出/之后的最后一值,但我不知道如何获取/之前的最后一位整数
我的url是
http://way2enjoy.com/touch/w2et/quotesalphalist.php?page=124/ABCD
我有兴趣从上面的网址得到124。
我可以用下面的分解代码获得最后一个值ABCD,但不知道如何获得124
$c=explode("/",$_SERVER[ 'REQUEST_URI' ]); $city=end($c);
请建议如何从上面的url中获得类似124的整数。请注意,这个124可能会更改为任何数字,但它将始终是数字,并且在最后/
这可能不是正则表达式的工作,而是您选择的语言中的现有工具的工作正则表达式并不是你对每一个涉及字符串的问题都挥舞的魔杖。您可能想要使用已经编写、测试和调试过的现有代码。
在PHP中,使用parse_url
函数。
Perl:URI
模块。
Ruby:URI
模块。
.NET:"Uri"类
$c = explode('=',$_SERVER[ 'REQUEST_URI' ]);
$result = explode('/', end($c));
echo $result[0];
我没有现成的PHP安装来测试这一点,但只要数字在最后一个/
之前,那么这样的东西应该可以工作:
$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";
}
您需要使用parse_url
和parse_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']);
使用$_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']);
<?php
$digit = explode("/", $_GET['page']);
echo $digit[0];
/// or using preg_match
preg_match("/('d+)'//", $_GET['page'], $matches);
echo $matches[1];