2012-11-06 4 views
0

가능한 경우 알아 내려고 시도 중 & 사용할 코드 : 현재 페이지의 내용을로드하고 w/in의 특정 페이지 (c.html)에 대한 상대 경로를 표시합니다. 지금까지 사용하여 PHP 또는 PHP Simple Html DOM Parser.PHP가 현재 페이지의 특정 내용을 얻으려면 PHP

내 코드의 "를 #navbar"

<?php 
$pg = 'c.html'; 
include_once '%resource(simple_html_dom.php)%'; 
/* $cpath = $_SERVER['REQUEST_URI']; Old version */ // Path to current pg from root 
$cpath = "http://www.".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
echo var_dump($cpath).": Current Root Path"."<br />"; // "http://www.partiproductions.com/copyr/index.php" - Correct 
$cfile = basename($cpath); 
echo 'Current File: ' . $cfile . "<br />"; // "index.php" - Current pg, Correct 

$html = file_get_html($cpath); // Getting Warning: URL file-access is disabled in the server configuration & failed to open stream: no suitable wrapper could be found in.. & Fatal error: Call to a member function find() on a non-object in... 
foreach($html->find(sprintf('#navbar a[href=%s]', $pg)) as $path) { 
    echo 'Path: ' . $path."<br />"; 
} 
?> 
+0

'print_r ($ _ SERVER)'를 실행하고 사용할 수있는 값이 있는지 확인하십시오. – Landon

+0

'$ html = file_get_html ('index.php');를 시도하고 아무것도 얻었는지 확인하십시오. 그렇지 않다면 스크립트와 같은 디렉토리에'index.php'가 있습니까? 그렇지 않다면'$ cpath'를 얻으십시오. – cpilko

+0

안녕하세요 @cpilko 그냥 index.php했지만, 작동하지 않았다. index.php는 현재 페이지입니다. Wally에게 아래의 코멘트를보십시오 – parti

답변

1

당신이 가진 가장 큰 문제는 ($의 개의 cfile를) file_get_html 당신의 호출이다. 귀하의 예제에서

$의 개의 cfile는 file_get_html()로이 통과

/copyr/index.php, 그것은 서버의 루트 디렉토리에있는 디렉토리/copyr 찾고있을 것입니다 같은 것을 포함하고 것 그 안에 index.php 파일이 있습니다. 표시된 경고에 따라 서버의 루트에 실제로이 폴더 구조가 없습니다.

실제로이 같은 현재 가지고있는 URI 앞에 전체 URL이 포함되어해야 할 일은 :

$cpath = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 

이이 같은 경로가 발생합니다 : http://www.yourserver.com/copyr/index.php 당신이 다음 작동합니다 file_get_html()에 대한;

+0

좋아, 월리, 나는 http : // www. 처음에는 현재 경로를 http : // www.partiproductions.com/copyr/index.php로 출력하고 있지만 문자열이기 때문에 문제가 발생합니까? 이 PHP 스크립트는 명시 적으로 언급하지 않았으므로 현재 페이지에 있습니다. 경고 : file_get_contents() [function.file-get-contents] : 파일 이름이 비어있을 수 없습니다. – parti

+0

cpath 가져 오는 중 : 경고 : file_get_contents() [function.file-get-contents] : URL 파일 액세스는 다음과 같습니다. .. 및 file_get_contents (http://www.partiproductions.com/copyr/index.php) [function.file-get-contents] : 스트림을 열지 못했습니다 : 적절한 래퍼를 찾을 수 없습니다. – parti

0

Asker의 업데이트 된 정보를 바탕으로 다른 접근 방식을 따릅니다.

두 파일에서 공유 할 콘텐츠 만 포함 된 새 파일을 만듭니다. 그런 다음 두 파일에서 (또는 나중에 필요할 경우) include() 함수를 사용하여 새 공유 컨텐트 파일의 내용을 주입하십시오.

index.php 파일 :

<?php 
//Any require PHP code goes here 
?> 
<html> 
    <body> 
    <?php include('sharedfile.php');?> 
    </body> 
</html> 

/copyr/c.php 파일 :

<?php 
//Any require PHP code goes here 
?> 
<html> 
    <body> 
    <?php include('../sharedfile.php');?> 
    </body> 
</html> 

sharedfile.php :

// You need to close the PHP tag before echoing HTML content 
?> 
<p> 
    This content is displayed via include() both on index.php and /copyr/c.php 
</p> 
<?php // The PHP tag needs to be re-opened at the end of your shared file 

목 여기서 이점은 동일한 기술을 사용하여 사이트 전체에서 원하는 파일에서 sharedfile.php 파일 내용을 사용할 수 있다는 것입니다. 또한 페이지의 DOM을 구문 분석 할 필요가 없기 때문에 여러 페이지에 걸쳐 표시 할 콘텐츠를 제거 할 수 있습니다. 느리고 오류가 발생하기 쉽습니다.

+0

지금은 색인 및 c.html/php 파일 만 있으면됩니다. C 파일에서 #myid 또는 .myclass를 대상으로하고 index.php에 특정 내용을 가져올 수 있기를 원합니다. c.php에 대한 경로는 자동으로 찾아야합니다. 귀하의 접근 방식에서, 내가 할 수없는 콘텐츠 만 원하는 파일이있었습니다 - 더 큰 기존 파일 (c.html/php)에서 가져와야합니다 - 감사합니다 – parti

관련 문제