login  Naam:   Wachtwoord: 
Registreer je!
 Forum

deel uit tekststring halen

Offline killerwhale6 - 12/03/2006 13:32 (laatste wijziging 12/03/2006 13:37)
Avatar van killerwhale6Nieuw lid hoi,

ik heb een variabele met volgende inhoud: width="1024" height="650"

nu zou ik die 1024 daaruit willen halen, zodat ik deze waarde kan vergelijken met een vooraf bepaald getal (om te zien of die width kleiner is of niet).

Hoe ga ik hiervoor best te werk?

die 1024 kan ook wel uit 3 getallen bestaan!

mvgr,

Matt

11 antwoorden

Gesponsorde links
Offline Stijn - 12/03/2006 13:39
Avatar van Stijn PHP expert euhm versta het niet goed.
Heb je dit:
  1. <?
  2. $width = 1024;
  3. $height = 650;
  4. ?>

of het je nu dit:
  1. <?
  2. $myVar = "width=1024 height=650";
  3. ?>

Offline furax - 12/03/2006 13:39
Avatar van furax HTML beginner uhm in AS gebruik je daarvoor substr om daar een apparte string van te maken, ik denk dat je iets in die aard moet zoeken.
Offline killerwhale6 - 12/03/2006 13:45 (laatste wijziging 12/03/2006 13:47)
Avatar van killerwhale6 Nieuw lid ik heb $width = "width="1024" height="650"";

maar die inhoud komt van een andere variabele, maar het komt op het bovenstaande neer. Dus ik wil daar het getal uithalen tussen de eerste 2 ""

eigenlijk heb ik $width = "{image_width}"

maar {image_width} is: width="1024" height="650"

en echo $width; levert op: width="1024" height="650"
Offline ikkedikke - 12/03/2006 13:53
Avatar van ikkedikke PHP expert ik ben er zelf niet zo goed in, maar je moet een reguliere expressie hebben, zie http://www.php.net/ereg
Offline Stijn - 12/03/2006 14:04
Avatar van Stijn PHP expert
  1. <?
  2. $width = "width='1024' height='650'";
  3. preg_match("{[0-9]{3,4}}" , $width , $results);
  4. //$results is een array met de resultaten
  5. //normaal zal $results 2 key's hebben, niet dus xD :s
  6. echo $results[0]; //eerste -> zal je 1024 zijn
  7. ?>

code werkt, getest
Offline b4nkr0bz0r - 12/03/2006 14:06 (laatste wijziging 12/03/2006 14:15)
Avatar van b4nkr0bz0r PHP gevorderde met ereg(); kom je niet zo ver want je kan daar alleenmaar mee vergelijken of een string aan een patroon voldoet. Je kan wel met preg_replace(); werken om tekst uit een string te selecteren, die geselecteerde tekst wordt geselecteerd op basis van een patroon.

Maar is het niet makkelijker om met explode(); alles in een array te zetten? dan kijk je of er een element alleen uit 4 getallen bestaat.

Ik ga nu ff een reg-exp proberen te maken...
  1. <?php
  2. // $sBericht moet je ff aanpassen aan je eigen variable-naam...
  3. preg_match_all('/^(width="(*.?)")$/si', $sBericht, $aMatches);
  4.  
  5. if (IsSet($aMatches[0]))
  6. {
  7. echo $aMatches[0];
  8. }
  9. else
  10. {
  11. echo 'Width is niet gevonden';
  12. }
  13. ?>


EDIT: bedoelde preg_match, maar heb nu even preg_match_all(); gebruikt, omdat dit een array terug geeft en mischien nog wel makkelijker kan zijn in zijn geval...
Offline kokx - 12/03/2006 14:12
Avatar van kokx Onbekend gewoon zoals stijn het zegt.

@b4nkr0bz0r: preg_replace heeft geen zin want dan geeft hij hoe ik denk dat jij het bedoelt verkeerd terug. En ipv explode kun je beter PHP.net: preg_split gebruiken als hij uit 3 of 4 getallen kan bestaan.
Offline killerwhale6 - 12/03/2006 15:46 (laatste wijziging 13/03/2006 18:26)
Avatar van killerwhale6 Nieuw lid
  1. preg_match("{[0-9]{3,4}}" , $width , $results);


Wat wil {3,4} zeggen aub?
Offline Rens - 13/03/2006 18:26
Avatar van Rens Gouden medaille

Crew algemeen
http://www.site...4&id=5
Citaat:
Je kan ook het aantal cijfers opgeven dat mag herkend worden; hiervoor gebruik je accolades ({ }):

* {5} : met één cijfer tussen de accolades geef je aan dat je zoekt naar PRECIES dat aantal van het voorgaande teken. Dus zal met p{5} alleen maar de string 'ppppp' gevonden worden.
* {3, 5} : met twee cijfers geef je een bereik aan: het aantal voorgaande tekens dat mag herkend worden. Dus met p{3,5} zal je dus de strings 'ppp','pppp' en 'ppppp' vinden.
* {3, } met één cijfer GEVOLGD door een komma geef je een minimumaantal aan voor het voorgaande teken. Dus met p{3, } zal je de strings 'ppp','pppp', enz.. vinden.


Volgende keer ff zoeken graag...
Offline Richard - 13/03/2006 18:32
Avatar van Richard Crew algemeen b4nkr0bz0r, wat zeg je nou? alleen vergelijken met ereg?

ereg en preg_match zijn precies hetzelfde, behalve dat ereg geen arrays aankan, geen offset heeft en preg_match delimiters verwacht.

int ereg ( string pattern, string string [, array &regs] )

int preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] )
Offline killerwhale6 - 13/03/2006 19:19 (laatste wijziging 13/03/2006 19:22)
Avatar van killerwhale6 Nieuw lid bedankt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.223s