Php 尝试获取相对路径

Php 尝试获取相对路径,php,Php,我正在尝试这样做,但在想问题的时候遇到了很多困难。我知道我是个彻头彻尾的php高手,但我真的需要弄清楚这一点,所以我非常感谢你的帮助 我正在尝试将一个“更正的”url传递给我网站上的一个小部件,这样,如果人们点击一个按钮,他们就会下载他们所在的pdf页面 我的网站使用友好的URL 我需要做的是抓取当前的url并将其更改为pdf,然后将结果放入按钮中 我想到的是“在一个什锦三明治里的馅饼上淋了一点酱汁” <?php function curPageURL() { $isHTTPS = (is

我正在尝试这样做,但在想问题的时候遇到了很多困难。我知道我是个彻头彻尾的php高手,但我真的需要弄清楚这一点,所以我非常感谢你的帮助

我正在尝试将一个“更正的”url传递给我网站上的一个小部件,这样,如果人们点击一个按钮,他们就会下载他们所在的pdf页面

我的网站使用友好的URL

我需要做的是抓取当前的url并将其更改为pdf,然后将结果放入按钮中

我想到的是“在一个什锦三明治里的馅饼上淋了一点酱汁”

<?php
function curPageURL() {
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] !=          "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
$port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
$url = ($isHTTPS ? 'https://' :    'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
return $url;
}

echo curPageURL();
?>

这将导致我的url

我甚至还没有找到替换url部分的方法,因为我不知道如何获取url或将其拆分。这很可悲

所以,就像一个带着锡杯和破布的乞丐,我请求帮助:)

我需要做的是把返回的url分解成碎片

如果它回来 “www.mysite.com/01/05/2013/9013/你妈妈穿着战斗靴/” 我需要将其更改为: “www.mysite.com/pdf/9013/你妈妈穿着战靴。pdf”


(可能前面有http://www.mysite.com以及这里的发布机制,我正在发布链接,我没有声誉,因此它不允许我在示例中使用完整的http://www.mysite.com)

您使用的是双
echo$current\u url更改为
echo$current\u url

您可以使用
$\u服务器[“HTTP\u主机”]
$\u服务器[“请求URI”]
来获取请求的URL。

我还没有尝试过您的代码,但它似乎已经有一条双
回音行

无论如何,我想给你一个非常简单的方法,我喜欢使用:

function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
         $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } 
    else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}
此函数的作用是每次调用
curPageURL()
时都会得到当前页面的url,就像url栏中显示的那样。你可以随心所欲地使用它

我希望这能解决你的问题:)

编辑: 要使用此选项获取url并将结尾从
.html
更改为
.pdf
只需执行以下操作:

$url = curPageURL(); // gets back www.sample.com/page.html
$newurl = str_replace(".html", ".pdf", $url); // changes url to www.sample.com/page.pdf
此代码使用答案顶部的函数

编辑2: 如果它返回您:
www.mysite.com/01/05/2013/9013/您的妈妈穿着战靴/
您将需要执行以下操作:

$url = curPageURL(); // gets back www.sample.com/page/
$newurl = substr_replace($url, "", -1) // changes url to www.sample.com/page
$newurl .= ".pdf" // adds the .pdf to the url so you get www.sample.com/page.pdf
编辑3: 首先-很高兴您使用wordpress:)

现在,wordpress codex使它更容易,实际上更容易做到: 为此,我们需要进行一些更改,还需要更改curPageURL函数

function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
         $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"];
    } 
    else {
        $pageURL .= $_SERVER["SERVER_NAME"];
    }
    return $pageURL;
}
我将解释:
$\u SERVER[“SERVER\u NAME”]
为我们提供了域名,比如
domain.com

$\u服务器[“请求URI”]
返回域、路径之后的所有内容。 在我们的例子中是:
01/03/2013/9013/page

现在,
curPageURL
函数只返回域名

现在让我们开始研究下一步:

 $url = curPageURL(); // gets back http://www.sample.com
 $url .= "/pdf"; // we add the /pdf to the url so it is now: http://www.sample.com/pdf
 $postid = get_the_ID(); // gives us the post ID. for example 9013
 $url .= "/" . $postid; // now we take the post ID and add it to the url: http://www.sample.com/pdf/9013
 $the_post = get_post($postid); // get the post by the ID
 $post_slug = $the_post['post_name']; // get the slug of the post 
 $url .= "/" . $post_slug; // adds the slug to the url: http://www.sample.com/pdf/9013/your_mom_wears_combat_boots
 $url .= ".pdf"; // finally add the pdf to the url so now you get: http://www.sample.com/pdf/9013/your_mom_wears_combat_boots.pdf
这里没有评论:

如果您想最小化线:

 $url = curPageURL() . "/pdf/" . get_the_ID(); // url is now: www.domain.com/pdf/postid
 $the_post = get_post(get_the_ID());
 $url .= "/" . $the_post['post_name'] . ".pdf"; //url is now: www.domain.com/pdf/postid/post_slug.pdf
现在您可以通过
echo$url
echo查看url

更新,上次编辑(4): 我犯了一个错误,关于得到子弹。
我使用了:
$the_post=get_post(get_the_ID())
然后拿了这个鼻涕虫,名字:
$the_post['post_name']

这样做是不对的

取出slug的最佳方法是运行代码:
$post_slug=basename(get_permalink())

所以这辆车看起来有点像:

 $url = curPageURL() . "/pdf/" . get_the_ID(); // url is now: www.domain.com/pdf/postid
 $post_slug = basename(get_permalink()); //gets the post slug
 $url .= "/" . $post_slug . ".pdf"; //url is now: www.domain.com/pdf/postid/post_slug.pdf
我们可以将其最小化:

 $url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf"; 
现在,您可以
echo$url

别忘了:这个函数需要位于
page.php
single.php
中,这样它才能知道帖子的slug和id是什么。
行:
$url=curPageURL()。“/pdf/”。获取\u ID()。“/”。basename(get_permalink()).“.pdf”
需要在循环中:
或您使用的任何其他循环


这应该可以完成任务:)

您的错误是两个相邻的回声。抱歉,我正在编辑原始帖子。。。现在完成了。echo$current_url与其说是个问题,不如说是解决了如何将其拆分、更改url并将其形成语句的问题:(1是否减少了一部分?例如/01/05/1将使其成为/01/?我需要9013部分和yourmomwears部分,但我需要在那之前插入pdf…所以原始URL看起来像:www.blah.com/01/03/2013/9013/page/到www.blah.com/pdf/9013/page.pdf,所以我想我需要更多地了解substr\u替换的是什么。)要想到达那里,我还不清楚如何将PDF放在字符串的中间:(对不起,我的速度太慢了,我觉得我应该更快地处理这个问题。我使用
substr\u replace
删除最后一个
/
,所以我改变了:
www.blah.com/01/03/2013/9013/page/
www.blah.com/01/03/2013/9013/page
,然后按照你之前的要求添加了pdf的结尾。我知道的是ant是不同的,为了给你提供你想要的解决方案,我需要知道你网站中所有链接的共同点。所以我会知道如何为你做到这一点。另外一件事是-是wordpress吗?这个链接看起来确实像一个普通的wordpress链接:),这样做会更容易!谢谢:)-是的,它是wordpress。所有的URL都是站点名称、日期、postid和seo友好名称。例如:http://www sample site/month/day/year/postid/your_mom\u wears\u combat\u boots我需要的是删除month、day、year并在该位置添加PDF,然后删除最后一个尾随/并放置.PDF,这样结果t应该是这样的:http://www sample site/pdf/postid/your_mom_wears_cobat_boots.pdfI无法告诉你我有多感激。哇,非常感谢你,我非常感谢你花时间详细解释每件事。我完全理解。你很棒。谢谢。不过我有一个问题:)Whe
 $url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf";