2016-05-18 6 views
0

PHPカールを使用してHTMLを返すAPIエンドポイントにPOSTしています。応答をエコーすると、HTMLとしてレンダリングする代わりにプレーンテキストとして出力されます。cURL応答HTMLはレンダリングされずにプレーンテキストとしてエコーされます

ヘッダーは正しく表示されます。なぜなら、HTMLの文字列をエコーすると、それは通常レンダリングされるからです。

代わりにレンダリングする方法はありますか?

$url = 'https://inlinestyler.torchbox.com/styler/convert/'; 
$myvars = 'source_url=XXXXXXXXXX&returnraw=1'; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$content = curl_exec($ch); 

// Plaintext 
echo $content; 

// Shows HTML 
echo '<h1>Testing</h1>'; 

答えて

1

ブラウザでそのAPIエンドポイントへのPOSTリクエストを作成し、それは開発ツールネットワークパネルに入ったレスポンスをチェックすると、あなたはAPIレスポンスの形式ですでに

&lt;html&gt; 
&lt;head&gt; 
&lt;title&gt;Example Domain&lt;/title&gt; 
etc. 
であることがわかりますあなたが代わりにレンダリングされた結果の表示コードを取得する理由だと -

だから何あなたが戻って、このAPIから取得すると、「純粋な」HTMLではなく、HTML HTMLエンティティとして書かれた特殊文字<>と。

エコーで出力する前に得た文字列の値にhtml_entity_decodeを適用すると、この問題は簡単に解決されます。

+0

明確な説明をありがとう! – jetlej

関連する問題