antalaron blogja

Ha ezen a blogon közzéteszek egy bejegyzést, azt kiküldöm a twitter csatornámra is. Még korábban készítettem egy twitter API-ra épülő PHP függvénytárat. Nem is ezt szeretném most kifejteni, a későbbiekben minden bizonnyal megteszem.

Minden bejegyzés címét is kiküldöm a twitter üzenettel. Valami ilyesmi formában:

antalaron blogja - URL-ek rövidítése egy twitter üzenetben http://blog.antalaron.hu/8-url-ek-roviditese-egy-twitter-uzenetben.html

Igen ám, de ez bizony jócskán kifuthat a 180 karkterből. Itt jön képbe az URL rövidítő alkalmazás. A legtöbb ember a bit.ly alkmalmazást használja, így én is ezt kezdtem el. Jól dokumentált API-ja van, statisztikák is kinyerhetők belőle, szóval sok előnye van.

Most már a twitter is automatikusan lerövidítené a webcímet egy t.co-s címre, de mivel ez a szolgáltatás csak twitteren belül elérhet (így tudom), és elképzelehető, hogy máshol is (e-mailekben, stb) szeretnénk hasonló funkcitó, talán hasznos lehet ez.

Az URL rövidítése

Mivel szeretek mindent (najó, legtöbb mindent) automatizálni, így bizony az URL rövidítését is szeretem megoldani. Ehhez használom a bit.ly API-ját. A következő függvényekkel tudom lerövidíteni a címet, valamint visszanyerni a rövidítettből az eredetit (szeretek minden függvénynek angol nevet adni, ki tudja hátha más nemzetiségűek is használják majd egyszer):


define( "BITLY_LOGIN", "login" );
define( "BITLY_APPKEY", "R_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" );

function shorten_url( $url ) {
  $geturl = 'http://api.bit.ly/v3/shorten?login='.BITLY_LOGIN.
    '&apiKey='.BITLY_APPKEY.'&uri='.urlencode( $url ).
    '&format=txt';
  return curl_get_result( $geturl );
}

function original_url( $url ) {
  $geturl = 'http://api.bit.ly/v3/expand?login='.BITLY_LOGIN.
    '&apiKey='.BITLY_APPKEY.'&shortUrl='.urlencode( $url ).
    '&format=txt';
  return curl_get_result( $geturl );
}

function curl_get_result( $url ) {
  $c = curl_init();
  $timeout = 5;
  curl_setopt( $c, CURLOPT_URL, $url );
  curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt( $c, CURLOPT_CONNECTTIMEOUT, $timeout );
  $data = curl_exec( $c );
  curl_close( $c );
  return $data;
}
 

A kódban látható egy bizonyos BITLY_LOGIN, és BITLY_APPKEY, ezeket a bit.ly oldalán, regisztráció után tudjuk kinyerni a saját alkalmazásunkhoz. Ezzel meg is lennénk.

Csinálhatnám úgy is, hogy minden bejegyzéshez legyártok egy bit.ly-s címet, eltárolom a kapott hash-t minden bejegyzéshez, majd ezután ha kell, ezt a címet hozzábiggyesztem a bejegyzéshez. Ennek két hátránya is van. Egyrészről előfordulhat, hogy egy bejegyzésben akár több webcím is van, másrészről előfordulhat, hogy lekérek olyan bejegyzések rövidítését is, amit nem fogok publikálni (persze ez nem fordul elő tömegével, nem is az én bajom lenne, de nem szeretem fölöslegesen terhelni mások szerverét). Ehelyett egy más megoldást választok.

Szövegben levő URL(-ek) rövidítése

Álljon itt az eredeti kiküldendő üzenet, ezt kívánom elküldeni, de előtte lerövidíteni a címeket benne. Egy olyan függvényt csinálok, mely megkeresi az URL-eket a szövegben, majd ezekre alkalmazza a shorten_url() függvényt. Szerencsénkre létezik olyan PHP függvény, mely reguláris kifejezéseket keres egy szövegben, és bizonyos részein, tetszés szerint alkalmaz függvényeket. Lássuk akkor az általam használt függvényt:


function str_shorten_url( $text ) {
  return preg_replace( "#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.".
    "([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#e",
    '"\\1".shorten_ulr("\\2://\\3").""', $text );
}

Ezután ezt a függvényt alkalmazzuk egyes szövegre, és a kívánt eredményt adja!

Hozzászólások:

Nincs hozzászólás.

Szólj hozzá!

Név: (kötelező)

E-mail: (kötelező, de nem jelenik meg, gravatarhoz kell)

Ábra:

Küldés