此代码:
function getId() {
$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
echo $uri_segments[3];
}
...从网址中提取网址片段。说我的网址是“mysite.com/a/b/1234”
代码输出1234
我想使用像这样的函数填充下面的代码1234
$res = $api->query('bibs/getId();', array(
所以和
一样$res = $api->query('bibs/1234', array(
....但它不起作用。有任何想法吗?我需要解析还是什么? 感谢
答案 0 :(得分:2)
echo
语句为described in the manual:
echo - 输出一个或多个字符串
通过"输出",这里的意思是将字符串发送给用户 - 将其显示在命令行脚本的终端上,或将其发送到用户的Web浏览器。
您正在寻找的是使用代码中其他位置的值,这被称为"返回"变量。有a manual page about returning values。
您需要做的下一件事是将该值与固定字符串'bibs/'
结合起来。为此,您可以使用string concatenation或string interpolation。
答案 1 :(得分:0)
你可以这样试试:
$res = $api->query('bibs/' . getId(), array(
答案 2 :(得分:0)
在你的函数中,你需要实际返回你想要使用它的值:
function getId() {
$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
return $uri_segments[3];
}
然后你可以输出结果,
echo getId();
或将其分配给另一个变量
$id = getId();
或直接使用它(通过连接到另一个字符串:
$res = $api->query('bibs/'.getId(), array(...
// the same when assigning it to a variable before:
$id = getId();
$res = $api->query('bibs/'.$id, array(...
请参阅IMSoP的答案,了解非常有用的解释和链接!