컬 PHP 에서 반환하는 다른 데이터 _FILE 및 _RETURNTRANSFER
문제
난타하고 있는 컬 PHP 다른 데이터를 반환을 말했을 때는 출력을 통해 파일 CURLOPT_FILE
으로 그것을 말했을 때 보낼 경우에도 출력하는 문자열을 통해 CURLOPT_RETURNTRANSFER
.
_RETURNTRANSFER
를 제거하는 것 같바꿈과 추가 공백으로 구문 분석하는 경우 표시하기 위한 표준으로 HTML 코드입니다. _FILE
다른 한편으로 보존 파일의 정확히 그대로 있었을 것입니다.
나는 설명서를 읽어에 php.net 하지만 아무것도 발견하지 않았을 것을 내 문제를 해결한다.이상적으로,하고 싶 _RETURNTRANSFER
반환 정확한 내용할 수 있도록 제거 중간 파일이 보이지 않는 어떤 방법을 만들기의 다음이 가능해집니다.
는 코드는 다음과 같습니다 난 사용합니다.데이터 질문에는 CSV 파일로 라인 엔딩이 있습니다.
function update_roster() {
$url = "http://example.com/";
$userID = "xx";
$apikey = "xxx";
$passfields = "userID=$userID&apikey=$apikey";
$file = fopen("roster.csv","w+");
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $passfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $file);
$variable_in_question = curl_exec ($ch);
curl_close ($ch);
fclose($file);
return $variable_in_question;
}
알고 보니,오류가 없었는 반환되지만,나는 방법에 대해 가고 있었 분석니다. 해석되지 않습 방법을 내가 예상되는 경우에 넣어옴표로 전환하면 쌍따옴표 해결이 내 문제입니다.지 않았다는 것을 알고 있는 이 차이를 만들어 내 함수 호출을 다음과 같다.
이 잘 작동:$cresult = split("\r\n", $cresult);
이지 않: $cresult = split('\r\n', $cresult);
해결책
알고 보니,오류가 없었는 반환되지만,나는 방법에 대해 가고 있었 분석니다. 해석되지 않습 방법을 내가 예상되는 경우에 넣어옴표로 전환하면 쌍따옴표 해결이 내 문제입니다.지 않았다는 것을 알고 있는 이 차이를 만들어 내 함수 호출을 다음과 같다.
이 잘 작동:$cresult = split("\r\n", $cresult);
이지 않: $cresult = split('\r\n', $cresult);
다른 팁
대부분에서 스크립트 langage(그것도 사실에 Bash 에 대한 인스턴스),간단한 따옴표를 나타내는 데 사용되는 사물을 있는 그대로,기록하는 반면 쌍따옴표는"분석이라"(하다고 생각하지 않는 적절한 단어 하지만 나는 더 찾을 수 없습니다).
$str = 'foo';
echo '$str'; // print “$str” to the screen
echo "$str"; // print “foo” to the screen
그것은 진정한 변수에 대해서 탈출했다.
시도 하지 않았을 재현"버그"(수 있습니다 우리가 생각으로 고려 버그는 경우 실제 동작),그러나 어쩌면 당신이 얻을 수 있습니다.
PHP Doc 는 기본 comportement 를 작성하는 것입니 결과를 파일로,그리고 그 기본 파일은 STDOUT(브라우저의 창).당신이 원하는 것은 같은 결과가 이 파일에만 변수입니다.
당신이 할 수 있는 것을 사용하여 ob_start();
고 ob_get_clean();
.
$ch = curl_init(...);
// ...
ob_start();
curl_exec($ch);
$yourResult = ob_get_clean();
curl_close($ch);
내가 알고 있는지 정말 깨끗한 방법(있을 경우),하지만 적어도 그것을 즐길 잘 작동합니다.
(실례는 경우에 저는 영어를 완벽하지 않습;-)...)