例如,我的网址是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
用于反向引用与(.*)
匹配的内容。