0

在 away?to= 之后寻找如何在 URI 中获取完整的字符串

我的代码:

if (isset($_SERVER[REQUEST_URI])) {
    $goto = $_SERVER[REQUEST_URI];
}

if (preg_match("/to=(.+)/", $goto, $goto_url)) {

$link = "<a href='{$goto_url[1]}' target='_blank'>{$goto_url[1]}</a>";

原文链接是:

https://domain.com/away?to=http://www.zdf.de/ZDFmediathek#/beitrag/video/2162504/Verschw%C3%B6rung-gegen-die-Freiheit-%281%29

..但是我的代码在away?to=之后将字符串剪切为 only

http://www.zdf.de/ZDFmediathek

你知道这个 preg_match 函数的修复方法是允许每个字符跟随away?to= ??

更新:

发现,$_SERVER['REQUEST_URI']或者$_SERVER['QUERY_STRING']已经在剪切原始 URL。你知道为什么以及如何预防吗?

4

2 回答 2

3

尝试使用 (.*)后得到所有to=

$str = 'away?to=dfkhgkjdshfgkhldsflkgh';
preg_match("/to=(.*)/", $str, $goto_url);
echo $goto_url[1]; //dfkhgkjdshfgkhldsflkgh 
于 2014-05-28T10:07:32.497 回答
0

您可以从 $_GET 数组中获取它,而不是使用正则表达式从请求 URI 中提取 URL:

$link = "<a href='{$_GET['to']}' target='_blank'>{$_GET['to']}</a>";
于 2014-05-28T10:22:13.760 回答