在 ~ 之后获取 URL 的一部分


Get part of URL after ~

例如,我的网址是http://example.tld/~2g .我想在~后获取数据(2g这里)。

我该怎么做?我试过了

$visitlink = explode("~", $_SERVER['REQUEST_URI']);

但这行不通。

我会用这个:

$visitlink = explode("~",$_SERVER['REQUEST_URI'],2);
$aftertilde = $visitlink[1];

list($before, $after) = explode("~", $_SERVER['REQUEST_URI'], 2);

这应该有效。我不确定列表函数是否已弃用。

为了充分利用explode函数,告诉 PHP 只在第一个~分裂(告诉 2)。list构造有助于直接分配返回值 (Demo):

list(, $visitlink) = explode("~", $_SERVER['REQUEST_URI'], 2);

如果不确定该值是否存在,则可能需要提供默认值:

list(, $visitlink) = explode("~", $_SERVER['REQUEST_URI'], 2) + array(1 => NULL); 
                                                              ^^^^^^^^^^^^^^^^^^^

这利用了数组联合运算符

或者:你这里有一个简单的模式,取第一个~之后的所有内容:

sscanf($_SERVER['REQUEST_URI'], "%*[^~]~%s", $data);

此示例使用适用于简单字符串搜索/模式的 sscanf 函数,此处将结果分配给 $data 变量。演示。

$visitlink = preg_replace('/^[^~]+~(.*)$/', '$1', $_SERVER['REQUEST_URI']);

正则表达式的^[^~]+~部分将匹配所有内容,直到遇到~(.*)将匹配波浪号之后的所有内容。 $1用于反向引用与(.*)匹配的内容。