PHP kurs: Case study - Parsovanje srpskih blogova

Ovaj tekst se nadovezuje na prethodni tekst Dragana Dinića PHP kurs: Uvod u regularne izraze.

Autor: Dragan Dinić

Nivo teksta: Srednji

Tehnopolis

Izvor: B92

Četvrtak, 05.10.2006.

14:30

Default images

Za kraj ćemo odraditi jedan mini projekat, a to je parsovanje liste blogova sa sajta http://planetoid.srpski.org.

Ovaj projekat je nešto komplikovaniji nego uobičajeni zadaci te vrste, jer je sajt  planetoid-a na ćirilici, što je donekle problem jer se PHP još uvek ne snalazi dobro sa UTF karakterima.

Učitavanjem sajta http://planetoid.srpski.org u browser, nakon analize  html source-a dolazimo do formata u kome su smešteni podaci unutar
html-a koje trebamo da "isčupamo":

<li><a href="{url_bloga}">{ime_bloga}</a>
<a href="{feed_bloga}">(извор)</a></li>

Nakon kraće analize, dolazimo do konačnog koda:

<?php
/**
* @version $Id$
* @package dinke.net
* @copyright &copy; 2006 Dinke.net
* @author Dragan Dinic <dragan@dinke.net>
*/

//get blogs from planetoid
require_once("curl_http_client.php");

//create new instance of curl class
$curl = &new Curl_HTTP_Client(true);

//and store html data from planetoid into string
$html_source = $curl->fetch_url("http://planetoid.srpski.org/", null, 30); 
//echo $html_source;
$found = preg_match_all("/<li><a href=\"([^\"]+)\">([^<]+)<\/a> <a
href=\"([^\"]+)\">\(извор\)<\/a><\/li>/", $html_source, $matches);
//var_dump($matches);
$urls = $matches[1];
$names = $matches[2];

foreach($urls as $key=>$value)
{
  echo "$value\t$names[$key]\n";
}
?>

Kao što vidite, koristili smo Curl  klasu za skidanje html-a sa planetoida. Ključna stvar ovde dešava  se 19-toj liniji koda, koja sadrži regularni izraz koji "čupa" sve podatke o blogovima i smešta ih u $matches niz. Obratite pažnju da smo delove patterna koje smo želeli da isčupamo stavili unutar zagrada (za deo koji sadrži url bloga i ime bloga), a upravo ti delovi će biti  prisutni u $matches nizu. Nakon importa, sa podacima možemo da radimo  šta god želimo (štampamo na ekran, smestimo u bazu itd.).

Eto toliko o regularnim izrazima za ovaj uvodni tutorijal. Za kraj evo i nekoliko linkova koji vam mogu biti od koristi prilikom daljeg
proučavanja regularnih izraza.

PHP Regular Expression Functions (POSIX Extended)
Regular Expression Functions (Perl-Compatible)
Wikipedia
Tutorial
Sjajan Ajax based RegExp eValuator

Planetoid

Dragan Dinić je 32-godišnji Web programer sa preko 5 godina iskustva u razvoju LAMP based aplikacija. U slobodno vreme Dragan vodi svoj blog ili diskutuje o Internet tehnologijama na raznim Web forumima.

Ovo je arhivirana verzija originalne stranice. Izvinjavamo se ukoliko, usled tehničkih ograničenja, stranica i njen sadržaj ne odgovaraju originalnoj verziji.

Komentari 7

Pogledaj komentare

7 Komentari

Možda vas zanima

Srbija

Oni su sada jedini vlasnici Knjaz Miloša

Mattoni 1873, najveći proizvođač mineralne vode i bezalkoholnih napitaka u Centralnoj Evropi, preuzeo je od kompanije PepsiCo manjinski udeo (46,43 odsto) u Knjaz Milošu, postavši jedini vlasnik.

18:20

26.4.2024.

1 d

Društvo

MUP upozorio građane Srbije

Povodom predstojećih prvomajskih i uskršnjih praznika očekuje se povećan priliv velikog broja putnika i vozila u našu zemlju, zbog čega se mogu očekivati duža zadržavanja na graničnim prelazima, upozorio je danas MUP.

9:37

26.4.2024.

1 d

Podeli: