〜之后获取URL的一部分

时间:2012-06-30 15:29:59

标签: php uri

例如,我的网址为http://example.tld/~2g。我希望在~2g此处)之后获取数据。

我该怎么做?我试过了

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

但这不起作用。

4 个答案:

答案 0 :(得分:2)

我会用这个:

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

答案 1 :(得分:0)

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

RegEx的^[^~]+~部分将匹配所有内容,直到遇到~为止。 (.*)会在波浪之后匹配所有内容。 $1用于反向引用(.*)匹配的内容。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

要充分利用explode函数,请告诉PHP仅在第一个~分割(通过告诉 2 )。 list构造有助于直接指定返回值(Demo):

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

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

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

这使用了array union operator

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

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

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