J'ai remarqué que cURL dans PHP renvoie des données différentes lorsqu'il est dit de sortir dans un fichier via CURLOPT_FILE
comme il le fait quand on lui dit d'envoyer la sortie à une chaîne via CURLOPT_RETURNTRANSFER
.cURL dans PHP retourne des données différentes dans _FILE et _RETURNTRANSFER
_RETURNTRANSFER
semble dépouiller les retours à la ligne et l'espace blanc supplémentaire comme si l'analyse de l'affichage en code HTML standard. D'autre part, conserve le fichier exactement comme il était prévu.
J'ai lu la documentation sur php.net mais je n'ai rien trouvé qui semble résoudre mon problème. Idéalement, je voudrais que _RETURNTRANSFER
retourne le contenu exact afin que je puisse éliminer un fichier intermédiaire, mais je ne vois aucun moyen de rendre cela possible.
Voici le code que j'utilise. Les données en question sont un fichier CSV avec des fins de ligne \ r \ n.
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;
}
fin de compte, l'erreur est pas dans ce qui était de retour, mais la façon dont je vaque à l'analyser. \ r \ n n'est pas analysé comme je l'espérais lorsqu'il est placé entre guillemets simples, le passage à des guillemets doubles a résolu mon problème. Je ne savais pas que cela faisait une différence dans les appels de fonction comme ça.
Cela fonctionne très bien: $cresult = split("\r\n", $cresult);
Cela ne signifie pas: $cresult = split('\r\n', $cresult);
Oui. PHP interprète les chaînes entre guillemets de manière différente, en effectuant une interpolation de chaîne en plus de gérer correctement les caractères especial (\ r, \ n, \ t). –