Sk!ppy Skrevet 29. desember 2010 Del Skrevet 29. desember 2010 Hei, Jeg har en var som inneholder et par ord, + størrelser. Jeg ville gjerne hentet ut størrelsene, som ser slik ut, X kan forandre seg. S (X-X), M (X-X), L (X-X) Det kan være alt fra xs til xl, så jeg vil kunne legge inn selv hvilke som skal hentes. Vil regne med at det kan gjøres med regEx, men det kan ikke jeg. Lenke til kommentar
Thomas. Skrevet 30. desember 2010 Del Skrevet 30. desember 2010 S (X-X), M (X-X), L (X-X) Skjønner ikke helt hva du mener.. Mente du for eksempel slik? <?php $string = 'var1(20),var2(40),var3(60)'; preg_match_all('/\(\w*\)/', $string, $m); foreach($m[0] as $i) { echo 'Størrelse: ' . $i . '<br>'; } ?> Dette vil printe ut størrelsene. (20), (40), (60). Lenke til kommentar
Sk!ppy Skrevet 30. desember 2010 Forfatter Del Skrevet 30. desember 2010 Ikke helt, mente dette: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum urna nunc, rhoncus pulvinar consequat sit amet, venenatis id elit, Størrelsene er S (10-20), M (20-30), L (30-40)[/quote[ Da vil S (10-20), M (20-30), L (30-40) bli hentet ut. Lenke til kommentar
Thomas. Skrevet 30. desember 2010 Del Skrevet 30. desember 2010 <?php $string = 'Størrelsene er S (10-5009), M (2089-30), L (30-409999)'; preg_match_all('|\D{3}(\d{1,9}\D\d{1,9})\D{1}|', $string, $m); echo 'String: ' . $string . '<br><br>'; foreach($m[0] as $i) { echo 'Størrelse: ' . $i . '<br>'; } ?> Dette vil gi resultatet: String: Størrelsene er S (10-5009), M (2089-30), L (30-409999) Størrelse: S (10-5009) Størrelse: M (2089-30) Størrelse: L (30-409999) \D{3} Matcher alt utenom tall. {3} = Bokstaven før, mellomrom og ( \d{1,9} Matcher alle tall med lengde fra 1 til 9. \D Matcher alle tegn utenom tall. \d{1,9} Matcher alle tall med lengde fra 1 til 9. \D{1} Matcher alt utenom tall. {1} = ) Lenke til kommentar
Sk!ppy Skrevet 30. desember 2010 Forfatter Del Skrevet 30. desember 2010 Den fungerte ikke helt som ønsket. preg_match_all('|\D{3}(\d{1,9}\D\d{1,9})\D{1}|', $sel['Description'], $m); foreach($m[0] as $i) { echo $i.'<br>'; } Hos meg nå. Den printer ut dette: on 09/10er 32/32. er 32/32. er 32/32. er 32/32. er 32/32. er 32/32. : 29/32: . 30/32: . 31/32: . 32/32: . 34/32: . 36/32: pp 1-2 pp 1-2 st 98-126c Utdrag fra en linje i filja dette ca målene: S (29-30), M (31-33), L (34-36), XL (38-40) Lenke til kommentar
FraXinuS Skrevet 30. desember 2010 Del Skrevet 30. desember 2010 class SizeFinder { private $_sizes_to_find; public function __construct(array $sizes_to_find){ $this->_sizes_to_find = $sizes_to_find; } public function findAll($data){ $sizes = implode('|', $this->_sizes_to_find); preg_match_all("/\b(?P<name>$sizes)\s\((?P<size>\d+.\d+)\)/", $data, $match, PREG_SET_ORDER); return $match; } } $description = 'dette ca målene: S (29-30), M (31-33), L (34-36), XL (38-40)'; $finder = new SizeFinder(array('S', 'L')); foreach($finder->findAll($description) as $match){ echo $match['name'], '=', $match['size'], "\n"; } Tror dette funker, men diskusjon legger til et linjeskift i regexen, du må fjerne det for at det skal funke. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå