[ peca89bg @ 04.07.2011. 15:15 ] @
Pozdrav svima,

naime, radim na jednom projektu, vucem preko dom+xpath-a stranicu, hvatam div u kome se nalazi podaci i dobijam sledeci string:

Article Number: 601.477.30 Width: 23 7/8" Height: 4 1/2" Length: 43 1/8" Weight: 38lb Quantity: 1Article Number: 601.477.30 Width:60cm Height:11cm Length:110cm Weight:17.3kg Quantity: 1

e sada je problem, samo ovo se nalazi u tom div-u a meni trebaju informacije za width, Weight, Quantity, Height itd.. u bazi..
ni jedan od ovih podataka nije zapisan u nekom tagu ili kako vec da bi mi olaksao posao...

jel moze neko da mi kaze kako bi isao regularni izraz, da izvlacim ove podatke koje su mi potrebni?
substr ne dolazi u obzi, podaci varirarju i nece biti ovako uvek...
trebam da ga generalizujem da uvek i kako god su zapisani da izvucem podatke koje su mi potrebni,
e sad ja kontam da to jedino mogu preko regularnih izraza, a ako neko zna neko drugo resenje bio bih mu veoma zahvalan na pomoci :)
[ Nikola Poša @ 04.07.2011. 18:02 ] @
A koje ti mere trebaju? Ove u inčima i librima ili u centrimetrima i kilogramima? I taj string baš izgleda tako? Dakle svaki taj zapis je dupliran u jednom redu, pritom spojen, samo se razlikuju merne jedinice?

Ja čak mislim da tu nema potrebe ići sa regexp-om, probaj da explode-uješ taj string po ":" , pa vidi šta dobijaš.
[ Br@nkoR @ 04.07.2011. 21:28 ] @
Možda nešto kao:
Code (php):

$text = 'Article Number: 601.477.30 Width: 23 7/8" Height: 4 1/2" Length: 43 1/8" Weight: 38lb Quantity: 1Article Number: 601.477.30 Width:60cm Height:11cm Length:110cm Weight:17.3kg Quantity: 1';

$pattern = '/((?:[A-Z][a-z]+\s?)+:)([a-z\d."\/\s]+)/';
preg_match_all($pattern, $text, $matches, PREG_SET_ORDER);

echo '<pre>' . print_r($matches, true) . '</pre>';
 



Ili pomoću preg_split funkcije:
Code (php):

$pattern = '/((?:[A-Z][a-z]+\s?)+:)/';
$results = preg_split($pattern, $text, -1, PREG_SPLIT_DELIM_CAPTURE| PREG_SPLIT_NO_EMPTY);

echo '<pre>' . print_r($results, true) . '</pre>';
 


[Ovu poruku je menjao Br@nkoR dana 04.07.2011. u 22:44 GMT+1]