为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 替换 URL 中的 basename

PHP 替换 URL 中的 basename

PHP
慕标琳琳 2023-05-12 15:39:59
我有这个功能。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';}在我的 URL 上,http://localhost/gateways/payu/index.php上述函数显示这样的 URL http://localhost/gateways/payu/index.phpresponse.php。不知道为什么会这样。该功能对我来说似乎是正确的。也许我遗漏了一些我无法将基本名称从index.phpto替换的东西response.php。任何帮助将不胜感激。谢谢 :)
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

目前,你$_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');


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信