Avatar billede Slettet bruger
19. juni 2005 - 08:37 Der er 20 kommentarer og
1 løsning

Kun tal ud af variabel

Hej.

Jeg har nu søgt noget rundt her og på php.net, men kan ikke lige finde det jeg søger.

Jeg har fået lavet noget kluns, så der er tal og tekst blandet sammen i en variabel. Det skal jeg have skilt ad igen.

F. eks.  a = CMD($variabel);  // CMD er den kommando jeg ikke kan finde.

Jeg mener helt bestemt at der findes sådan een, men hvad er det den hedder og hvordan bruges den ?

I ovenstående skal tallet lande i a og $variabel kunne indeholde "20 Kr." - og jeg skal så kun bruge tallet.

På forhånd tak.
Avatar billede nielle Nybegynder
19. juni 2005 - 08:53 #1
<?php
$variabel = "20 Kr.";

$pattern = "/(\d+)/";
if (preg_match($pattern, $variabel, $matches))
{
    echo "Dit tal: " . $matches[1];
}
?>
Avatar billede Slettet bruger
19. juni 2005 - 08:56 #2
Skal der virkelig så meget til for at gøre det ?
Avatar billede nielle Nybegynder
19. juni 2005 - 09:00 #3
Der er ikke nogen *helt* simpel måde (som jeg kender til). Løsningen af problemet afhænger også af hvordan formatet på din tekststreng er; Vil den f.eks. altid indeholde tal som det første og så tekst bagefter? Og vil der altid være et mellemrum umiddelbart efter tallet?

Den helt rigtige løsning ville i øvrigt være at få ordnet det allerede der hvor problemet opstår, altså der hvor du blander tal og tekst sammen i første omgang.
Avatar billede schaefner Juniormester
19. juni 2005 - 09:02 #4
Du kan med lidt held gøre således:

<?php
$variabel = "20 Kr.";

$a = (int)$variabel;

echo $a;
?>

Men som nielle skriver, så kommer det an på formatet af din streng.
Avatar billede Slettet bruger
19. juni 2005 - 09:02 #5
Ja ja, den er jeg helt med på, men det er en kolonorm masse linier der skal laves om.

Jeg kan ikke forstå der ikke er en indbygget i php der bare tager tallet ud fra en variabel. Det mener jeg da der var i gamle BASIC :-) men jeg kan ikke huske hvad den hedder.

På et tidspunkt skal der slåes en streg i sandet og så skal det hele laves forfra, men det kan jeg ikke nå inden det skal bruges i denne omgang.
Avatar billede nielle Nybegynder
19. juni 2005 - 09:05 #6
Hvis det er en masse linjer som skal laves om så ville jeg *helt* bestemt hellere rette det der hvor problemet opstår.
Avatar billede nielle Nybegynder
19. juni 2005 - 09:09 #7
... men bortset fra det så kan du jo bare indkabsle det i din egen lille fúnktion og så kalde denne på hver af dine mange variable:

<?php
$variabel = "20 Kr.";
$variabel = GarbageInBeautyOut($variabel);

function GarbageInBeautyOut($inData)
{
    return substr($inData, 0, strpos($inData, ' ')-1);
}
?>
Avatar billede schaefner Juniormester
19. juni 2005 - 09:10 #8
function GarbageInBeautyOut($inData)
{
    return substr($inData, 0, strpos($inData, ' '));
}
Avatar billede Slettet bruger
19. juni 2005 - 09:13 #9
Som schaefner skriver så kan jeg bruge det forslag. I dette tilfælde står tallet altid først, så det er nok derfor det virker.

Jeg skulle bruge det til en idé jeg fik længe efter jeg havde lavet det første, det er flere år siden, men nye idér dukker jo op :-)

Jeg siger tak, og så er det jo med at lægge et svar. I har jo begge haft ulejlighed, så mon ikke I skal dele ? Begge forslag virker sikkert, men schaefner's virkede mere simpelt at putte ind i et DB udtræk :-)
Avatar billede nielle Nybegynder
19. juni 2005 - 09:14 #10
Er dine tal i øvrigt heltal allesammen - eller er der også kommatal iblandt dem?
Avatar billede nielle Nybegynder
19. juni 2005 - 09:18 #11
Jeg spørger fordi (int)-løsningen faktisk vil fjerne kommaet og alt efter dette.

... og et svar :^)
Avatar billede Slettet bruger
19. juni 2005 - 09:24 #12
Ja alle tal står som tallet og så DKr. bagefter. Og det DKr. skulle jo ikke have været med i databasen, men sådan er der jo så meget. Det skal jeg have lavet om sammen med andre uhensigtsmæssigheder jeg finder efterhånden :-)
Avatar billede nielle Nybegynder
19. juni 2005 - 09:28 #13
Når du nu alligevel skal i gang med at lave en masse kode tilretninger, så kunne du jo lige så godt bruge al den energi på at lave et lille 10-15 linjers script som løb igennen din database-tabel og som fjernede det " Dk" derfra.
Avatar billede Slettet bruger
19. juni 2005 - 09:34 #14
Ja, men så skal jeg en masse andet igennem og tilføje Kr. der :-) Så det kan vist bedst betale sig at lave et par nye sider næste år. Det er noget der kun bruges i 3 uger en gang om året :-)

Det er da irriterende, at jeg ikke får mail herfra mere, når der er svar eller kommentarer. Få I andre det ?
Avatar billede nielle Nybegynder
19. juni 2005 - 09:35 #15
Der er meget få personer som får emails. Sådan har det stået på i over 3 uger nu. :^(
Avatar billede Slettet bruger
19. juni 2005 - 09:38 #16
Ok, tak for info. Jeg troede det var her det var galt.
Avatar billede Slettet bruger
19. juni 2005 - 09:42 #17
schaefner kommer du med et svar ?
Avatar billede nielle Nybegynder
19. juni 2005 - 09:46 #18
Læs evt. her om folks frustrationer over de manglende mails:

http://www.eksperten.dk/spm/Eksperten/
Avatar billede Slettet bruger
19. juni 2005 - 10:36 #19
Ja, det ser jo ikke godt ud. De har vist mere travlt med, at få noget spyware lignende på vores computere. Spybot Search and Destroy popper ustandselig op med advarsler, det er heller ikke særlig rart at vide.
Avatar billede schaefner Juniormester
19. juni 2005 - 15:13 #20
Bare giv pointene til nielle
Avatar billede Slettet bruger
19. juni 2005 - 15:42 #21
Okay. TAK for hjælpen begge to.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester