curl_exec результати друку, коли я цього не хочу


80

Я використовую такий код:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 12); 

$result = curl_exec($ch);

curl_close ($ch);

Однак результати друкуються відразу. Чи можна помістити результат JSON у змінну, щоб я міг роздрукувати його, коли захочу?


1
у коді, який ви публікуєте, я не бачу жодного друку
Хаїм Евгі

6
У цьому полягає суть у тому, що цей сегмент коду друкує результати скручування, коли я їх теж не запитую.
Олівер Байєс-Шелтон,

Відповіді:


177

Встановити CURLOPT_RETURNTRANSFERпараметр:

// ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);

За документами :

CURLOPT_RETURNTRANSFER- TRUEповернути передачу як рядок значення, що повертається, curl_exec()замість того, щоб виводити його безпосередньо.


2
У зв’язаному документі написано: "З PHP 5.1.3 ця опція не впливає: вихідний вихідний результат завжди повертається, коли використовується CURLOPT_RETURNTRANSFER". Я не зовсім впевнений, що розумію це, будучи Мавгом з дуже маленьким мозком, і у мене все ще така ж проблема, як і ОП
Моуг каже відновити Моніку

3
Схоже, що ця примітка в документації PHP пов’язана з параметром CURLOPT_BINARYTRANSFER, а не з параметром CURLOPT_RETURNTRANSFER.
Кел


-6

після того, як php 5.1 curlбуде відображати завжди результат, який ви можете переглянути в документації. для уникнення просто використовуйте

echo "< span style='display:none'>";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 12);

$result = curl_exec($ch);

curl_close ($ch);

echo"< /span>";

4
curlПоведінка користувача можна налаштувати, але якщо ви дійсно стикаєтесь з чимось, що неможливо налаштувати на повернення значення замість того, щоб його надрукувати, вам слід скористатися ob_start()перед тим, як викликати його та ob_get_clean()після. Поверненим значенням ob_get_clean()буде вміст, який інакше був би надрукований. Подивіться на документацію до цих функцій, щоб дізнатись про них. Ваша відповідь насправді непристойна, тому я думав, що ви можете навчитися з них. Не мав на увазі образити вас. Удачі!
Tamás Barta

3
Насправді проблема з цією відповіддю (крім пунктів, згаданих попереднім коментатором) полягає в тому, що вона не відповідає на питання. Про це не згадувалося, якщо це веб-програма чи ні, тому ви не можете бути впевнені, як відображається вихід (це може бути навіть консольна програма).
mark.sagikazar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.