Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

RegExp za parsiranje stringa pomoc

[es] :: PHP :: RegExp za parsiranje stringa pomoc

[ Pregleda: 2357 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vzdrale
Vlatko Zdrale
Chicago, USA

Član broj: 70153
Poruke: 48
*.177.123.201.ip.anet.com.

Sajt: webdeveloper.terapad.com


Profil

icon RegExp za parsiranje stringa pomoc04.05.2007. u 15:52 - pre 205 meseci
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....
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
82.208.211.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 16:03 - pre 205 meseci
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...
 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 16:22 - pre 205 meseci
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>';
 
Odgovor na temu

vzdrale
Vlatko Zdrale
Chicago, USA

Član broj: 70153
Poruke: 48
*.177.123.201.ip.anet.com.

Sajt: webdeveloper.terapad.com


Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 18:06 - pre 205 meseci
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

 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 19:11 - pre 205 meseci
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);
 
Odgovor na temu

vzdrale
Vlatko Zdrale
Chicago, USA

Član broj: 70153
Poruke: 48
*.177.123.201.ip.anet.com.

Sajt: webdeveloper.terapad.com


Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 19:30 - pre 205 meseci
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...

 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: RegExp za parsiranje stringa pomoc04.05.2007. u 22:09 - pre 205 meseci
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];
 
Odgovor na temu

[es] :: PHP :: RegExp za parsiranje stringa pomoc

[ Pregleda: 2357 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.