2013-05-23 4 views
0

그래서 나는 텍스트 파일에서 한 줄의 PHP 프로그램을 가지고있다. leapMotionSandbox 파일 (게시물/: 그럼 내가 WAMP 서버이상한 오류 나는 PHP로 받고있다

경고를 사용하고, 그것이 다른 텍스트 파일

$posts = "posts/posts.txt"; 
$postsLines = file($posts); 
$fetchingPost = TRUE; 
$postNumber = 0; 
$postPointer; 
$postPointerString; 
$postLines; 
$postTag; 
$postTitle; 
$postContent; 
$endCondition = "end"; 

while ($fetchingPost == TRUE) { 

    $endOfFile = strcmp($postsLines[$postNumber], $endCondition); 
    if ($endOfFile == 0) { 
     $fetchingPost = FALSE; 
    } 

    if ($endOfFile <> 0) { 
     $postPointer[$postNumber] = $postsLines[$postNumber]; 
     $postLines = file($postPointer[$postNumber]); 
     $postNumber = $postNumber + 1; 
    } 
} 

를 가리 키도록 읽을 텍스트의 라인을 사용하고 내가 그것을 실행할 때 나는이 오류를 얻을. txt) : 스트림을 열지 못했습니다. C : \ wamp \ www \ noahhuppert \ Paralax v2 ​​\ index.php에 잘못된 인수가 있습니다.

경고 : 파일 (posts/topDownShooter.txt) : 스트림을 열지 못했습니다 : 잘못된 argument in C : \ wamp \ www \ noahhuppert \ Paralax v2 ​​\ index.php on line 45

제발 도와주세요

+0

라인 (45) 어느? – Barmar

답변

0

file()에 의해 반환 된 배열 요소는 각 줄의 끝에 개행 문자가 있습니다. 이것은 Windows에서 유효한 파일 이름 문자가 아닙니다 (파일 이름에 줄 바꿈 문자를 포함시키지 않더라도 유닉스에서는 유효합니다). documentation에서

: FILE_IGNORE_NEW_LINES 사용하지 않으면 당신은 여전히 ​​당신이 줄이 끝나는 원하지 않는 경우() RTRIM 사용해야하므로

결과 배열의 각 행은, 끝 라인을 포함 할 것이다.

루프를 크게 단순화 할 수도 있습니다. $fetchingPost 또는 $endOfFile 변수가 필요하지 않으므로 while() 조건의 끝을 테스트하면됩니다.

while (($line = rtrim($postsLines[$postNumber]) != $endCondition) { 
    $postPointer[$postNumber] = $line; 
    $postLines = file($line); 
    $postNumber++; 
} 

양자 택일로, 당신은 할 수 있습니다 :

$postsLines = file($posts, FILE_IGNORE_NEW_LINES); 
+0

왜 downvote? – Barmar

+0

Barmar가 맞다고 생각합니다. 파일 이름 끝에 공백이있는 것으로 보입니다. 파일 이름 문자열에 var_dump를 시도하고 문자 수를 계산하십시오. 그 작동하지 않는 경우 원본 (부모) 경로 밖으로 공간을 사용하여 시도 할 것입니다. – Homer6

+0

나는 downvote을 didnt했다. 너는 네가 나를 얼마나 많이 구해줬는지 전혀 모른다. –