2013-08-27 4 views
2

У меня есть небольшая проблема (я думаю).auto-generate bit.ly urls in php wont work

мой сайт генерирует ссылку и ссылку thad, которую я хочу укоротить.

это мой код:

<?php 
error_reporting(0); 
include("config.php"); 
if(isset($_POST["sub"])) { 
if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } 
else 
    { 
    $r = rand(1,100000); 
    $filename = $r . $_FILES["file"]["name"]; 
    if (file_exists("upload/" . $filename)) { 
    echo "<center>"; 
     echo $_FILES["file"]["name"] . " already exists. Please Rename your file and try again.</center><br>"; 
    } 
else 
    { 
    $link="$baseurl/upload/" . $filename; 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $filename); 
    echo "<center>Direct Download link: <a href=\"$link\">$link</a></center><br>"; 
    } 
} 
} 

include("main.html"); 
?> 

я хочу, чтобы сократить исход «$ ссылку», чтобы укоротить bit.ly. поэтому я сделал некоторые исследования и нашел этот полезный скрипт:

function make_bitly_url($url,$login,$appkey,$format = 'xml',$version = '2.0.1') 
{ 
    //create the URL 
    $bitly = 'http://api.bit.ly/shorten?version='.$version.'&longUrl='.urlencode($url).'&login='.$login.'&apiKey='.$appkey.'&format='.$format; 

//get the url 
//could also use cURL here 
$response = file_get_contents($bitly); 

//parse depending on desired format 
if(strtolower($format) == 'json') 
{ 
    $json = @json_decode($response,true); 
    return $json['results'][$url]['shortUrl']; 
} 
else //xml 
{ 
    $xml = simplexml_load_string($response); 
    return 'http://bit.ly/'.$xml->results->nodeKeyVal->hash; 
} 
} 

/* usage */ 
$short = make_bitly_url('$link','dsfser','R_5aafdd2f8d67f78150e52ffbd0613519','json'); 
echo 'The short URL is: '.$short; 

так, что я не получаю, если я ставлю в этой строке: make_bitly_url («>>> $ ссылку < < <», «dsfser»,» R_5aafdd2f8d67f78150e52ffbd0613519' , 'JSON'); $ link он не берет ссылку с кода выше, но если я использую google.nl, он работает.

Может кто-нибудь посмотреть, что я делаю неправильно?

THANX!

+1

Изменить '$ короткий = make_bitly_url ('$ ссылку', 'dsfser', 'R_5aafdd2f8d67f78150e52ffbd0613519 ',' json '); 'to' $ short = make_bitly_url ($ link,' dsfser ',' R_5aafdd2f8d67f78150e52ffbd0613519 ',' json '); ' Использование '$ var' предотвратит замену $ var на вашу строку. –

+0

Благодарим вас за решение! Я не так далеко в php, чтобы я все еще учился! благодаря! –

+0

Проверьте это [ссылка] (http://php.net/manual/en/language.types.string.php). Прочтите ссылки «одиночные кавычки» и «двойные кавычки». –

ответ

0

Вы пытаетесь повторить ссылку $ link, которая окружена одинарными кавычками.

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

<?php 
$var = 'variable'; 
//echo string 
echo 'test this is a '; 
echo $var; 
echo '!'; 

//previous 2 echos show: "test this is a variable!", however you could concatenate it like this: 
echo 'test this is a '.$var.'!'; 
?> 

РЕШЕНИЕ:

Изменение:

$short = make_bitly_url('$link','dsfser','R_5aafdd2f8d67f78150e52ffbd0613519','json'); 

к:

$short = make_bitly_url($link,'dsfser','R_5aafdd2f8d67f78150e52ffbd0613519','json');