2014-12-30 12 views
2

Sanskrit Natural Language Programming에 대한 코드를 작성하고 있습니다. 이전에 컴퓨터가 테스트 모드에 있었기 때문에 GET 메서드를 통해 변수를 보내서 HTML 프론트 엔드에서 PHP 코드로 테스트하고 편집했습니다.PHP에서 파일에 쓸 수있는 에코를 조정할 수 있습니까?

이제 코드의 안정성이 다소 향상되었습니다.

출력 내용을 브라우저 화면에 표시하는 대신 사전 정의 된 txt/HTML 파일에 쓰고 싶습니다.

내 일반적인 코드 라인은 다음과 같습니다

if ($a === 1) // if a condition is satisfied. 
{ 
    //Do something here 
    echo "<p class = sa >X rule has applied. </p>\n"; 
} 

내가 에코 기능을 조작하고로 사용할 수있는 몇 가지 방법이있다 - fputs ($ OUTFILE, $ B가) 여기서 $ b는 에코되고있는 문자열입니다. 본 경우에는 :

fputs($outfile,"<p class = sa >X rule has applied. </p>\n"); 

코드는 개발 단계의 비트 여전히. 그래서, 나는이 echo를 fputs로 대체하는 좋은 방법이라고 생각하지 않는다. 그렇지 않으면 단일 변경에 대해 - 두 버전의 코드 (fputs 및 echo 한 버전)를 변경해야합니다.

내가 생각하기에 파이썬에서는 파이썬 함수를 재정의 할 수있다. 내장 함수 인 경우에도 사용자 지정 함수 max (a, b)를 정의 할 수 있습니다. PHP에서 'fputs'작업을 수행하는 'echo'를 만들 수있는 방법을 모르겠습니다. PHP 언어에서는 명령 줄에서이 작업을 수행하려고합니다. 예 :

if (isset($argv[0])){ 
// Some function to replace echo with fputs for the whole program 
} 

모든 안내는 환영합니다.

+0

Google은이를 매우 빨리 발견했습니다. http://codeutopia.net/blog/2007/10/03/how-to-easily-redirect-php-output-to-a-file/ – ElefantPhace

+0

덧붙여 말하자면'$ argv'를 테스트하는 대신' php_sapi_name()'함수 또는'PHP_SAPI' 상수 : http://php.net/manual/en/function.php-sapi-name.php – IMSoP

답변

4

버퍼링 된 데이터를 변환하는 데 사용할 수있는 콜백 함수를 지정할 수 있으므로 output buffering을 사용할 수 있습니다. 브라우저에 빈 문자열을 반환하면서 버퍼링 된 출력을 포착하고 파일에 기록 콜백 함수를 정의 : 당신이 브라우저로 출력을 보낼 수 있도록 스크립트 동안을 해제하려면

$outfile = fopen('log.txt', 'wb'); 
ob_start(function($x) use($outfile) { 
    fwrite($outfile, $x); 
    return ''; 
}); 

다시 ob_end_flush();으로 전화하십시오.

+0

Neat. 이전에 콜백을 사용하여'ob_start'를 보지 못했습니다. 설명을 약간 확장하여 링크를 따라 가지 않으면 이해하기가 더 쉽습니다. – IMSoP

+0

당신은 내 하루를 보냈습니다. 그것은 나의 목적을 위해 봉사한다. 출력 버퍼를 배우는 것이 좋습니다. –