php - PHP 替换 URL 中的基本名称
问题描述
我有这个功能。
function getCallbackUrl(){
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . 'response.php';
}
在我的 URLhttp://localhost/gateways/payu/index.php
上,上面的函数显示这样的 URL http://localhost/gateways/payu/index.phpresponse.php
。不知道为什么会这样。该功能对我来说似乎是正确的。也许我错过了一些我无法从 to 替换基本名称的index.php
东西response.php
。任何帮助将不胜感激。谢谢 :)
解决方案
目前,你$_SERVER['REQUEST_URI']
自己有index.php
,因此你面临这个问题,response.php
连接而不是替换。快速修复如下:
$_SERVER['REQUEST_URI'] = str_replace(basename($_SERVER['REQUEST_URI']),'response.php',$_SERVER['REQUEST_URI']);
return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
您还可以使用parse_url()
,str_replace()
和的组合basename()
来实现此目的。
- 解析 url 并获取 URI 路径。
- 获取 URI 的基本名称。
- 用你想要的替换它。
- 将这些部分连接在一起并返回 URL。
片段:
<?php
function getCallbackUrl($url,$replacement_file){
$url_data = parse_url($url);
$url_data['path'] = str_replace(basename($url_data['path']),$replacement_file,$url_data['path']);
$url = $url_data['scheme'] . "://" . $url_data['host'] . $url_data['path'];
if(!empty($url_data['query'])) $url .= '?' . $url_data['query'];
return $url;
}
echo getCallbackUrl('http://localhost/gateways/payu/index.php','response.php');
推荐阅读
- r - 在 R-Viewer 中打印表格的输出
- arrays - 如何在mongod中对嵌套值使用投影
- typescript - 在 NestJs 插件设计中附加 Sequelize 模型字段
- cucumber-java - 如何为 Java 库编写黄瓜验收
- react-native - React Native Webview 将参数添加到本地 URI
- html - CSS边框底部仅在一侧
- java - 如何使用java获取第一个文件以及最后修改的文件
- android - 工具属性 - Jetpack Compose 中的示例资源
- python - PyQt5:进程以退出代码-1完成
- python - ValueError:使用 cvxopt 进行 SVM 的域错误?