2012-10-24 45 views
0

我一直在试图让pastebin API代替告诉我pastebin链接,只是输出原始数据。 PHP代码是这样的:Pastebin API粘贴数据

<?php 

$api_dev_key  = 'Stackoverflow(fake key)';  
$api_paste_code   = 'API.'; // your paste text 
$api_paste_private  = '1'; // 0=public 1=unlisted 2=private 
$api_paste_expire_date = 'N'; 
$api_paste_format  = 'php'; 
$api_paste_code  = urlencode($api_paste_code); 

$url   = 'http://pastebin.com/api/api_post.php'; 
$ch    = curl_init($url); 

?> 

通常这会上传$ api_paste_code到引擎收录,可见像pastebin.com/St4ck0v3RFL0W了,而是我希望它生成的原始数据。

原始数据链接是http://pastebin.com/raw.php?i=,任何人都可以帮忙吗?

参考:http://pastebin.com/api

回答

0

首先请注意,您必须发送POST请求到pastebin.com API,而不是GET。因此,请勿在输入数据上使用urlencode()

要从页面网址获取原始粘贴网址,您有几个选项。但最简单的大概是:

$apiResonse = 'http://pastebin.com/ABC123'; 
$raw  = str_replace('m/', 'm/raw.php?i=', $apiResponse); 

最后,这里是一个完整的例子:

<?php 
$data = 'Hello World!'; 

$apiKey = 'xxxxxxx';       // get it from pastebin.com 
$apiHost = 'http://pastebin.com/'; 

$postData = array(
    'api_dev_key' => $apiKey,    // your dev key 
    'api_option'  => 'paste',    // action to perform 
    'api_paste_code' => utf8_decode($data), // the paste text 
); 

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL    => "{$apiHost}api/api_post.php", 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_POST   => 1, 
    CURLOPT_POSTFIELDS  => http_build_query($postData), 
)); 

$result = curl_exec($ch); // on success, some string like 'http://pastebin.com/ABC123' 
curl_close($ch); 

if ($result) { 
    $pasteId = str_replace($apiHost, '', $result); 
    $rawLink = "{$apiHost}raw.php?i={$pasteId}"; 

    echo "Created new paste.\r\n Paste ID:\t{$pasteId}\r\n Page Link:\t{$result}\r\n Raw Link:\t{$rawLink}\r\n"; 
} 

运行上面的代码,输出:

c:\xampp\htdocs>php pastebin.php 
Created new paste. 
Paste ID:  Bb8Ehaa7 
Page Link:  http://pastebin.com/Bb8Ehaa7 
Raw Link:  http://pastebin.com/raw.php?i=Bb8Ehaa7 
1

据我看到的,响应包含在创建内容时所产生的引擎收录URL。像这样的网址:

http://pastebin.com/UIFdu235s 

所以你只需要的是摆脱“http://pastebin.com/”这样做的:

$id = str_replace("http://pastebin.com/", "", $url_received_on_last_step); 

,然后将其追加到原始网址你提供了:

$url_raw = "http://pastebin.com/raw.php?i=".$id; 

你会得到原始数据。

+0

没有工作,仍然出来,而不原始数据。 – user1725113

+0

参考:http://snag.gy/tmqN0.jpg – user1725113

+0

但是你从哪里得到'$ url_received_on_last_step'?我看不到您的代码(来自所提供的图片),您实际上已经获取了收到的网址。 –