例如,我的网址是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);
这应该有效。我不确定列表功能是否已弃用。
$visitlink = preg_replace('/^[^~]+~(.*)$/', '$1', $_SERVER['REQUEST_URI']);
RegEx的^[^~]+~
部分将匹配所有内容,直到~
遇到 a。(.*)
将匹配波浪号后的所有内容。$1
用于反向引用匹配的内容(.*)
。
要充分利用该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);