2013-07-10 4 views
1

저는 이것을 수행하고 문제를 발견하는 데 많은 어려움을 겪고 있습니다. 나는 완전한 PHP 멍청이라는 것을 알고 있지만, 정말로 알아 내야 할 필요가있어서 당신의 도움에 감사 할 것입니다.상대 경로를 얻으려고 시도합니다.

"수정 된"URL을 내 웹 사이트의 위젯에 전달하려고합니다. 사람들이 버튼을 클릭하면 pdf에있는 페이지를 다운로드합니다.

내 웹 사이트 친화적 인 URL을 http://www.sample.com/friendly/url/this/thing.html 내가 현재 URL을 잡고 PDF 친화적 변경하고 버튼에 결과를 넣어해야 할 일은

를 사용합니다. 내가 함께 왔어요 무엇

내 URL을 결과 상위 #shitsandwich

<?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(); 
?> 

에서 #filetofpain에 #failsauce 이슬비입니다.

URL을 가져 오거나 해체하는 방법을 알아 내지 못하기 때문에 URL 부분의 부분을 대체하지 못했습니다. 슬프다.

그래서 "나는 URL을 조각으로 반환 헤어되어해야 할 일은

...

그것이 을 반환하는 경우 I에 주석 컵과 넝마와 거지 도움 :)에 대한 주장과 같은 www.mysite.com/01/05/2013/9013/your-mom-wears-combat-boots/ " 변경 필요 : "www.mysite.com/pdf/9013/your-mom-wears -combat-boots.pdf "

(앞에 http : //로 표시 될 가능성이있는 게시물 메커니즘은 여기에 링크를 게시하고 있으므로 명성이 없습니다.) 당신이 요청 된 URL을 얻을 수 $_SERVER["HTTP_HOST"]$_SERVER["REQUEST_URI"]을 사용할 수 있습니다 echo $current_url;

+2

오류는 두 개의 서로 다른 옆에 있습니다. – apartridge

답변

3

당신은 이중 echo echo $current_url; 변화를 사용하고 있습니다 : 나 전체 HTTP를 넣어하지.

+0

죄송합니다. Niloy 원래 게시글을 편집하고 있었지만 지금 완료되었습니다. echo $ current_url은 URL을 변경하고 성명서로 작성하는 방법을 알아내는 것만 큼 문제가되지 않습니다. ( – Casca

0

에 예제 // www가 내 사이트의 com)을

0

내가 코드를 시도하지 않은하지만 이미 이중 echo 라인을 갖고있는 것 같아요 ..

어쨌든

난 당신에게 내가 사용하려는 아주 간단한 방법주고 싶습니다 :

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; 
} 

을 이 기능은 URL 바에있는 것처럼 현재 페이지 URL을 가져 오는 curPageURL()을 호출 할 때마다 발생합니다. 당신이 원하는대로 그것으로 일할 수있는 것보다.

이 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 :

당신을 반환하는 경우 :

$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 : 당신이해야 할 것보다 www.mysite.com/01/05/2013/9013/your-mom-wears-combat-boots/ 모든

제일 - 다행 당신이 사용하는 워드 프레스 :

이제는 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; 
} 

내가 설명 할 것입니다 :
$_SERVER["SERVER_NAME"]domain.com처럼, 우리에게 도메인 이름을 제공합니다.
$_SERVER["REQUEST_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(); 
$url .= "/pdf"; 
$postid = get_the_ID(); 
$url .= "/" . $postid; 
$the_post = get_post($postid); 
$post_slug = $the_post['post_name']; 
$url .= "/" . $post_slug; 
$url .= ".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을로 만들 수 있습니다. 98,

업데이트, 마지막 편집 (4) : 나는 슬러그를 얻기에 관하여, 실수를 한

.
나는 사용했다 : $the_post = get_post(get_the_ID()); 그리고 슬러그를 가지고 간, 이름 : $the_post['post_name']

이것은 바르지 않았다.
$post_slug = basename(get_permalink());

그래서 이것은 조금에게 그것을보고 supposd 방법 chagnes :

$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;할 수 있습니다 더욱 최소화

잊지 말아야 할 점 :이 함수는 게시물의 슬러그와 게시물의 ID를 알아 내기 위해 page.php 또는 single.php이어야합니다.
줄 : $url = curPageURL() ."/pdf/". get_the_ID() ."/". basename(get_permalink()) .".pdf";은 루프에 있어야합니다 : <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 또는 다른 루프를 사용해야합니다.

이 작업을 수행해야합니다 :)

+0

) -1은 한 부분 만 취합니다 (예 :/01/05/the - 1은/01 /을 만들 것입니다. 9013 부분과 yourmomwears 부분이 필요하지만 그 전에 pdf를 삽입해야합니다. 원본 URL은 다음과 같습니다. www.blah.com/01/03/2013/9013/page /에 www.blah.com/pdf/9013/page.pdf에 내가 substr_replace가 실제로 거기에 도착하는 것을 더 이해할 필요가 있다고 생각한다. 그러나 나는 문자열의 중간에 어떻게 pdf를 넣을 지 불분명하다. 죄송합니다. 너무 느립니다. 이걸 빨리 가져 가야 할 것 같아요. – Casca

+0

'substr_replace'를 사용하여 마지막 '/'을 삭제합니다. 그래서 변경합니다 :'www.blah.com/01/03/2013/9013/page /'를'www.blah.com/01/03/2013/9013/page'로 변경하고 이전에 물어 보았던 것처럼 pdf의 마무리를 추가합니다. 내가 아는 것은 당신이 원하는 것이 다르고 당신에게 당신이 찾고있는 솔루션을 제공하기 위해 또는 사이트의 모든 링크에 공통적 인 내용을 알아야합니다. 그래서 나는 당신을 위해 그것을하는 방법을 알게 될 것입니다. 그리고 또 다른 것은 - 그 wordpress는 무엇입니까? 링크는 일반적인 WordPress 링크처럼 보입니다. :) 그런 식으로하면 더 쉽게 할 수 있습니다! –

+0

고마워요. :) 예, 그렇습니다. 모든 URL은 사이트 이름, 날짜, 우편 번호 및 친숙한 이름과 같습니다. 예를 들어 : 에 http : // www가 샘플 사이트/월/일/년/postid/your_mom_wears_combat_boots 내가 필요한 것은 월, 일, 년 제거하고 그 위치에 PDF를 추가 한 다음 마지막 후행를 제거하는 것입니다/ 가 HTTP :// www가 샘플 사이트/PDF/postid/your_mom_wears_combat_boots.pdf 내가 대답에 편집을 추가 한 – Casca

관련 문제