Witam szanownych kolegów.
Umieściłem już to pytanie na innym forum, ponieważ jest brak zainteresowania umieszczam ponownie tutaj i liczę na waszą pomoc.
Zależy mi na odebraniu listy tytułów z FilmWeb i odpowiednio przetworzyć dane.
Męczę się ale bez skutecznie.
Pobieram stronę z "http://www.filmweb.pl/search/live?q=Nazwa_filmu"
Pare przykładów:
w formacie txt, kodowanie utf-8
Batman: http://wyslijto.pl/plik/er4tezggwq
Matrix: http://wyslijto.pl/plik/ci26g7hmb9
Robin: http://wyslijto.pl/plik/jsn4c9y3z2
Potrzebuję z tych danych wyciągnąć:
ID_FILMU
Oryginalny_Tytul
Tytyl_Polski
Tytul_niemiecki(czy jakoś tak)
Rok_Produkcji
Aktorzy
ścieżkę do okładki.
Jeśli odczytuje to i poddaje str_replace itp. to parę tytułów mam dobrze a końcówkę mam zepsutą.
skleciłem coś w tym stylu ale to jest lipa
//$document=zawiera dane
//--Kod parsowania--
if (substr($document, 0,3)=="f\\c")
{
$document=substr($document,3);
}
$tablica_find=array('\\af','\\as');
$tablica_rep=array(PHP_EOL.'{NEXT_MOVIE}'.PHP_EOL);
$wynik=str_replace($tablica_find, $tablica_rep, $document);
$wynik=str_replace(array('\\c'), array(PHP_EOL), $wynik);
$tb_f=array("\ap","\ag");
$tb_r=array(PHP_EOL);
$wynik=str_replace($tb_f,$tb_r, $wynik);
// Przetwarzanie danych
$wyn=explode(PHP_EOL, $wynik);
$Items=array();
$operation=0;
$obj=new Movie();
foreach($wyn as $item)
{
if (empty($item))
{
// Pusty string
} else
{
switch ($item)
{
case '{NEXT_MOVIE}':
$operation=0;
$Items[]=$obj;
unset($obj);
$obj=new Movie;
break;
default:
// Sprawdzanie która operacja
switch ($operation)
{
case 0: // ID_MOVIE
$obj->setMovie_ID($item);
break;
case 1: // Okładka
$obj->setCover($item);
break;
case 2: //Oryginalny Tytuł
$obj->setOryginalTitle($item);
break;
case 3: // Tytył
$obj->setTitle($item);
break;
case 4: // Niemiecki tytyl
$obj->setDeutschTitle($item);
break;
case 5: // Rok Produkcji
$obj->setYearProduction($item);
break;
case 6: // Aktorzy
$obj->setActors($item);
break;
}
$operation++;
break;
}
}
}
return $Items;
}
class Movie
{
var $_movie_id=0;
var $_title='';
var $_oryginaltitle='';
var $_deutschtitle='';
var $_yearproduction=0;
var $_cover='';
var $_actors='';
private $_pathImage='http://1.fwcdn.pl/po';
public function setMovie_ID($value)
{
$this->_movie_id=$value;
}
public function setTitle($value)
{
$this->_title=$value;
}
public function setOryginalTitle($value)
{
$this->_oryginaltitle=$value;
}
public function setDeutschTitle($value)
{
$this->_deutschtitle=$value;
}
public function setYearProduction($value)
{
$this->_yearproduction=$value;
}
public function setCover($value)
{
$this->_cover=$this->_pathImage.$value;
}
public function setActors($value)
{
$this->_actors=$value;
}
// Get
public function getMovie_ID()
{
return $this->_movie_id;
}
public function getTitle()
{
return $this->_title;
}
public function getOryginalTitle()
{
return $this->_oryginaltitle;
}
public function getDeutschTitle()
{
return $this->_deutschtitle;
}
public function getYearProduction()
{
return $this->_yearproduction;
}
public function getCover()
{
return $this->_cover;
}
public function getActors()
{
return $this->_actors;
}
public function bulid_array()
{
// Buduję tablice array
$tablica=array(
'movie_id' => $this->_movie_id,
'oryginaltitle' => $this->_oryginaltitle,
'title' => $this->_title,
'cover' => $this->_cover,
'actors' => $this->_actors,
'yearproduction' => $this->_yearproduction
);
return $tablica;
}
}
Panowie macie jakieś pomysły questionmark.gif
w dokumencie występują znaki takie jak
\c - chyba enter
f\c - początek dokumentu
\af - następny tytuł filmu
\as - Następny tytuł jest serialem
\ag - ?
Często jest różna konfiguracja i z stąd mój problem z rozwiązaniem tego.
Dziękuję serdecznie za wszelką pomoc.
P.S - Prośba do moderatora, jeśli to nie właściwy dział proszę o przeniesienie do bardziej odpowiedniego, Dziękuje.