[ vzdrale @ 04.05.2007. 15:52 ] @
imam string koji izgleda nesto kao:

P12345 - Neka tamo kompanija Project Manager: Neko ime Contract Amount: 12345.00 Start Date: Apr 9 2007 12:00AM Client Name: Neka tamo druga kompanija Client Address: broj ulica, drzava zemlja postanski broj Client Contact: neko ime Contact Title: neki tamo title Contact Email: [email protected]

Znaci ovo sto je boldovano je konstantno i ne menja se, a ostalo se menja. Trebao bi mi neki regExp koji bi mi to lepo isprasirao u niz:

parsed[0] = 'P12345'
parsed[1] = 'neka tamo kompanija'
parsed[2] = 'Neko ime'
parsed[3] = '12345.00'
parsed[4] = 'Apr 9 2007 12:00AM'
parsed[5] = 'Neka tamo druga kompanija'
parsed[6] = broj ulica, drzava zemlja postanski broj
parsed[7] = 'neko ime'
parsed[8] = 'neki tamo title'
parsed[9] = '[email protected]'

regExp mi i nisu bas jaca strana, i sve sto sam uspeo je nesto ovako:

preg_match("#Project Manager: (.*?) Contract Amount:#s", $text2parse, $parsed['projectManager']);
preg_match("#Contract Amount: (.*?) Start Date:#s", $text2parse, $parsed['contractAmount']);
preg_match("#Start Date: (.*?) Client Name:#s", $text2parse, $parsed['startDate']);
preg_match("#Client Name: (.*?) Client Address:#s", $text2parse, $parsed['clientName']);
preg_match("#Client Address: (.*?) Client Contact:#s", $text2parse, $parsed['clientAddress']);
preg_match("#Client Contact: (.*?) Contact Title:#s", $text2parse, $parsed['clientContact']);
preg_match("#Contact Title: (.*?) Contact Email:#s", $text2parse, $parsed['clientTitle']);

svaka pomoc je dobrodosla....
[ dakipro @ 04.05.2007. 16:03 ] @
Prva ideja (losa ako se nesto promeni), uzmes sve sto je boldovano i zamenis sa recimo '|#|' i dobijes string koji exploadujes po tom izrazu ('|#|') i dobijes niz kakav zi zeleo...
[ glavince @ 04.05.2007. 16:22 ] @
Code:

$str = "
P12345 - Neka tamo kompanija 
Project Manager: Neko ime 
Contract Amount: 12345.00 
Start Date: Apr 9 2007 12:00AM 
Client Name: Neka tamo druga kompanija 
Client Address: broj ulica, drzava zemlja postanski broj 
Client Contact: neko ime Contact 
Title: neki tamo title 
Contact Email: [email protected]";
$str = str_replace("\r\n", " ",$str);
preg_match('|P12345 -(.*?)Project Manager:|', $str, $kompanija); 
preg_match('|Project Manager:(.*?)Contract Amount:|', $str, $manager); 
preg_match('|Contract Amount:(.*?)Start Date:|', $str, $amount);
preg_match('|Start Date:(.*?)Client Name:|', $str, $start);
preg_match('|Client Name:(.*?)Client Address:|', $str, $klient);
preg_match('|Client Address:(.*?)Client Contact:|', $str, $klient_adr);
preg_match('|Client Contact:(.*?)Title:|', $str, $klient_cont);
preg_match('|Title:(.*?)Contact Email:|', $str, $title);
preg_match('|Contact Email:(.*)|', $str, $email);
echo 'P12345 - '.$kompanija[1].'<br>';
echo 'Project Manager: '.$manager[1].'<br>';
echo 'Contract Amount: '.$amount[1].'<br>';
echo 'Start Date: '.$start[1].'<br>';
echo 'Client Name: '.$klient[1].'<br>';
echo 'Client Address: '.$klient_adr[1].'<br>';
echo 'Client Contact: '.$klient_cont[1].'<br>';
echo 'Title: '.$title[1].'<br>';
echo 'Contact Email: '.$email[1].'<br>';
[ vzdrale @ 04.05.2007. 18:06 ] @
ovo je bilo brzo...

hvala puno na resenjima.
prvo resenje mi ne pomaze jer sam ja ovo boldovao da bi bilo uocljivije :)

drugo resenje shljaka k'o podmazano, ali bi hteo da dodam nekoliko stvari, a posto vidim da ovde ima strucnjaka, molim za pomoc...

Code:
P12345 - Neka tamo kompanija Project Manager: Neko ime Contract Amount: 12345.00 Start Date: Apr 9 2007 12:00AM Client Name: Neka tamo druga kompanija Client Address: 111 Neka Ulica, drzava zemlja postanski broj Client Contact: neko ime Contact Title: neki tamo title Contact Email: [email protected]


kompleto parsiranje koje mi treba bi trebalo da izgleda ovako:

Code:

parsed[0] = 'P' // nije obavezno P, moze da se pojavi i neko drugo slovo
parsed[1] = '12345' // 1 ili vise cifara
parsed[2] = 'Neka tamo kompanija'
parsed[3] = 'Neko ime'
parsed[4] = '12345.00'
parsed[5] = 'Apr 9 2007 12:00AM'  // problem je sto nekad umesto Start Date moze da se pojavi Finish Date, ali to mozete da zanemarite (mogu valjda nesto i sam da odradim :)
parsed[6] = 'Neka tamo druga kompanija'
parsed[7] = '111'
parsed[8] = 'Neka Ulica'
parsed[9] = 'drzava'          // obicno samo dva slova (nema space)
parsed[10] = 'zemlja'        // obicno samo dva slova (nema space)
parsed[11] = 'postanski broj'   
parsed[12] = 'neko ime'
parsed[13] = 'neki tamo title'
parsed[14] = '[email protected]'

hvala unapred

[ glavince @ 04.05.2007. 19:11 ] @
Stringove koje trazis su ti izdvojeni. Sada sa njima mozes da radis sta zelis.
Da bi dobio to sto trazis treba te stringove samo da strpas u neki niz.

$parsed = array($kompanija[1],$manager[1],$amount[1]);

i imas

$parsed[0] //kompanija
$parsed[1] //manager
$parsed[2] //amount
...

A ako ti je uvjek na prvo mesto ta sifra (P12345) onda

preg_match('|(.*?)Project Manager:|', $str, $kompanija);
[ vzdrale @ 04.05.2007. 19:30 ] @
hvala glavince, hteo bih da string: P12345
razdelim na
P
12345


a string Client Address: broj ulica, drzava zemlja postanski broj
razdelim na:

broj ulica // npr. 111 some street
drzava // npr. IL
zemlja // npr. US
postanski broj // npr. 60067

hvala, i ovo do sada mi je bila velika pomoc...

[ glavince @ 04.05.2007. 22:09 ] @
Ovako, sada bi sve zavisilo od delimetra. T.e. Treba da postavis standardni delimetar za da bi posle mogao da razbijes string.

Za P123456 : Neka tamo kompanija

$kompanija = explode(":",$kompanija[1]); //delimetar je " : "
echo $prvi = substr(trim($kompanija[0]),0,1);
echo $drugi = substr(trim($kompanija[0]),1,strlen($kompanija[0]));
echo $treci = $kompanija[1];

Za Client Address: broj, ulica, drzava, zemlja, postanski broj

$klient_adr = explode(",",$kompanija[1]); // delimetar " , "
echo 'br'.$klient_adr[0];
echo 'ulica'.$klient_adr[1];
echo 'drzava'.$klient_adr[2];