Gå til innhold

Hente ut størrelser?


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

<?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

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/10

er 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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...