显示REDIRECTED链接

时间:2016-01-22 21:27:57

标签: php

如何在php中显示重定向网址的最后一个数字?

重定向,我的意思是这样的

$nick=$_GET['nickname'];
$url='http://es.cheese.formice.com/mouse/' . $nick . '';

例如,如果url是script.php?nickname = Skyleter,将是http://es.cheese.formice.com/mouse/Skyleter,这里的问题是它重定向到http://es.cheese.formice.com/mouse/Skyleter.17529827,(试试自己)所以我想显示数字重定向的网址。

对我来说,这是17529827

这可能吗?

请不要说"最后8位"比如$ variable = substr($ url,-8); ,所以每个缺口都有不同的ID。

在输入值时也不好显示自定义错误。 [script.php而不是script.php?nick = nick]

显示" undefinex指数"默认情况下。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果它总是数字,你可以使用filter_var轻松将它们拉出来。

$url = 'http://es.cheese.formice.com/mouse/Skyleter.17529827';
$id = filter_var($url, FILTER_SANITIZE_NUMBER_INT);

echo $id; // 17529827

如果昵称包含数字,那么这不会起作用。如果格式保持这种方式(总是以点和一组数字结尾),那么我猜你可以使用pathinfo并将其作为路径的扩展读取。

$urlParts = pathinfo('http://es.cheese.formice.com/mouse/Skyleter1111.17529827');
echo $urlParts['extension'];

答案 1 :(得分:1)

由于此网址会重定向您,因此您需要使用curl来获取下一个网址。

这将有效:

<?php
$nick='Skyleter'; //$_GET['nickname'];
$url='http://es.cheese.formice.com/mouse/' . $nick;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$a = curl_exec($ch);
if(preg_match('#Location: (.*)#', $a, $r))
 $l = trim($r[1]);

$user_id = end((explode('.', $l)));
echo $user_id;
?>

它会爆炸最后一个点(.)的字符串,这就是ID之前的字符串。