如何在php中获取用于创建API的URL?
我想得到一个URL,这是来自反应路由。 URL类似于:如何在php中获取用于创建API的URL?,php,regex,url,Php,Regex,Url,我想得到一个URL,这是来自反应路由。 URL类似于:http://localhost:3001/users/[会员\用户名] 其中,member\u username将根据用户名进行动态设置 例如,如果一个url像http://localhost:3001/users/gray然后一个变量将得到灰色或类似http://localhost:3001/users/john然后变量将获得john 现在,我需要将该url导入WordPress php文件以创建API 我尝试过这个解决方案,但没有得到适
http://localhost:3001/users/[会员\用户名]
其中,member\u username
将根据用户名进行动态设置
例如,如果一个url像http://localhost:3001/users/gray
然后一个变量将得到灰色
或类似http://localhost:3001/users/john
然后变量将获得john
现在,我需要将该url导入WordPress php文件以创建API
我尝试过这个解决方案,但没有得到适合我问题的确切解决方案
这是我需要获取URL的API代码
function get_user_id(){
$server_name = $_SERVER['SERVER_NAME'];
$user_name = basename("http://".$server_name."/users/admin");
// For now i have set the username as static, so it should be a dynamic as user hit the url.
$users = get_user_by('login', $user_name);
if( !empty($users) ){
foreach ($users as $key => $user) {
$user_name = new stdClass();
$user_name->id = $user->ID;
$user_name->user_login = $user->user_login;
$user_name->user_nicename = $user->user_nicename;
$user_name->user_email = $user->user_email;
return $user_name;
}
}
}
/*
*
* Add action endpoint building
*
*/
add_action( 'rest_api_init', function () {
register_rest_route( 'rest-endpoints/v1', '/userid', array(
'methods' => 'GET',
'callback' => 'get_user_id'
));
});
你能告诉我为什么这个解决方案不适合你的问题吗? 似乎可以获取用户名 不过,也许你可以试试这个
<?php
$url = parse_url('http://localhost:3001/users/yourname',PHP_URL_PATH);
$url = str_replace("/users/","",$url);
echo $url;
?>
您能告诉我为什么该解决方案不适合您的问题吗? 似乎可以获取用户名 不过,也许你可以试试这个
<?php
$url = parse_url('http://localhost:3001/users/yourname',PHP_URL_PATH);
$url = str_replace("/users/","",$url);
echo $url;
?>
您可以使用:
$url_path = parse_url('http://localhost:3001/users/a13/abc',PHP_URL_PATH);
$url = preg_replace("/\/(?:[^\/]*\/)*/","",$url_path);
echo $url;
输出:
abc
演示:
或者这个正则表达式:
\/(?:[^\/\s]*\/)*
演示:
两者都可以正常工作。您可以使用:
$url_path = parse_url('http://localhost:3001/users/a13/abc',PHP_URL_PATH);
$url = preg_replace("/\/(?:[^\/]*\/)*/","",$url_path);
echo $url;
输出:
abc
演示:
或者这个正则表达式:
\/(?:[^\/\s]*\/)*
演示:
两者都可以正常工作。根据您提供的SO参考和不起作用的解决方案…:您能否详细说明它为您产生的任何信息和/或错误(-log)?请使您的问号更具体,并确保其他人可以重现您的错误(即完整的代码?)。现在太笼统了。分类结束审核>需要编辑。我已编辑我的问题添加代码部分以获得更多理由。我没有收到错误,但我的问题是如何从远程url获取上学期的url?基于您提供的SO参考和不起作用的解决方案…:您能否详细说明它为您生成的任何信息和/或错误(-log)?请使您的问号更具体,并确保其他人可以重现您的错误(即完整的代码?)。现在太笼统了。分类结束审核>需要编辑。我已编辑我的问题添加代码部分以获得更多理由。我没有收到错误,但我的问题是如何从远程url获取上一个术语的url?
yourname
是动态的,那么我如何获取上一个术语的动态?@GrayCarry:你的意思是yourname
实际上可能类似于a/b/c
?您想获得c
?是的,url的最后一部分将是动态的。。。所以它应该根据用户名进行更改,就像Facebook用户档案一样。它的第一部分是一个常量url(例如or),用户名将被动态传递。yourname
是动态的,那么我如何才能得到最后一个术语dynamic?@graycharry:你的意思是yourname
实际上可能类似于a/b/c
?您想获得c
?是的,url的最后一部分将是动态的。。。所以它应该根据用户名进行更改,就像Facebook用户档案一样。它的第一部分是一个常量url(例如or),用户名将被动态传递。我想要动态值,它将在一个常量url路径后连接,该路径是http://localhost:3001/users/[会员名称]
那么是否有任何PHP函数会返回一个值,该值将获得动态用户名值?我想要动态值,该值将在http://localhost:3001/users/[member_username]
那么是否有任何PHP函数将返回一个值,该值将获得该动态用户名值?