Avatar billede Slettet bruger
03. maj 2003 - 17:05 Der er 32 kommentarer og
1 løsning

eregi: at hente 283 ud af "r283:Test bare"

Hej!

Jeg har en variabel med et indhold der hedder

noget i stil med

"r283:Test bare" eller "r19:Ny her"

Det jeg gerne vil er at hente 283 eller 19 ud af variablen.

noget med $test = eregi(????):
Avatar billede schaefner Juniormester
03. maj 2003 - 17:07 #1
Den kan bl.a. laves sådan her:
$tal = eregi_replace("[^0-9]",$var);

Utestet og det kan sikkert også laves smartere :)
Avatar billede Slettet bruger
03. maj 2003 - 17:09 #2
øhm, nej jeg vil gerne beholde de 283 eller 19. Det er r og : og Ny her der skal væk ;)
Avatar billede jakoba Nybegynder
03. maj 2003 - 17:11 #3
http://dk.php.net/manual/en/function.preg-match.php

$res = array
preg_match ( "/r(\d+):", $din_streng_variabel, $res, "i" )

$forste_fundne_tal = $reg[1];

mvh JakobA
Avatar billede schaefner Juniormester
03. maj 2003 - 17:13 #4
Det skal selvfølgelig være:
$tal = eregi_replace("[^0-9]","",$var);
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:13 #5
preg_match ( "/r(\d+):"/, $din_streng_variabel, $res);
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:14 #6
preg_match ( "/r(\d+):/", $din_streng_variabel, $res);

sådan...
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:14 #7
Eller
preg_match ( "/r(\d+):/i", $din_streng_variabel, $res);
Avatar billede jakoba Nybegynder
03. maj 2003 - 17:14 #8
Ups.
$res = array();  // rettet linie
preg_match ( "/r(\d+):", $din_streng_variabel, $res, "i" )
if ( count($reg) > 0 ) {
    $forste_fundne_tal = $reg[1];
} else {
    // der var ingen match
}
Avatar billede Slettet bruger
03. maj 2003 - 17:15 #9
Det må meget gerne være muligt at skrive tal efter kolon, da det ellers bliver noget ged.

schaefner> Din virker hvis man ikke skriver tal efter kolon, men det skal jeg kunne.

Det eneste sikre er at r + et tal befinder sig til venstre for et kolon. Alt sammen først i strengen.

jakoba> hehe...der er vist et par fejl ;)
Avatar billede jakoba Nybegynder
03. maj 2003 - 17:15 #10
Ups igen. erik har ret. jeg mangler også en afsluttende / i mønsteret.
Avatar billede schaefner Juniormester
03. maj 2003 - 17:18 #11
el_barto >> Man kan da fint skrive tal efter kolon med den jeg har postet?
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:18 #12
Er det ikke mere "reglementeret" med

if (preg_match ( "/r(\d+):/i", $din_streng_variabel, $res)) {
  $forste_fundne_tal = $reg[1];
} else {
  //nix
}
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:19 #13
Schaefner: det står ingen steder, men der kunne vel komme en

  r7913:Katte har 9 liv
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:20 #14
Og uups, helt rigtigt:

if (preg_match ( "/^r(\d+):/i", $din_streng_variabel, $res)) {
Avatar billede jakoba Nybegynder
03. maj 2003 - 17:21 #15
jo
Avatar billede Slettet bruger
03. maj 2003 - 17:21 #16
hm, der er ikke rigtigt noget der vil...

Jeg prøver med det her:
$val = "r2:hej";
if (preg_match ( "/r(\d+):/i", $val, $res)) {
$tal = $reg[1];
}
echo $tal;

Men det giver ikke noget?
Avatar billede schaefner Juniormester
03. maj 2003 - 17:22 #17
$var = "r2:hej";
$tal = ereg_replace("[^0-9]","",$var);
echo "$tal";

Virker den ikke som den skal?
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:23 #18
if (preg_match ( "/r(\\d+):/i", $val, $res)) {
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:24 #19
Virker den her schaefner:

$var = "r7913:katte har 9 liv";
$tal = ereg_replace("[^0-9]","",$var);
echo "$tal";
Avatar billede Slettet bruger
03. maj 2003 - 17:25 #20
aha:

$val = "r2:hej";

if (preg_match ( "/r(\\d+):/i", $val, $res)) {
$tal = $res[1];
}
echo $tal;

Der var lige forskel på reg og res ;)
Avatar billede schaefner Juniormester
03. maj 2003 - 17:25 #21
ok, nu er jeg med ;o)
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:29 #22
men snup lige en

if (preg_match ( "/^r(\\d+):/i", $val, $res)) {

så matcher den kun hvis det står forrest på linien.
Alternativt (det er præcis det samme):

if (preg_match ( '/^r(\d+):/i', $val, $res)) {
Avatar billede Slettet bruger
03. maj 2003 - 17:31 #23
ok, tak for hjælpen allesammen, nu virker det som smurt i ekspertviden ;)

schaefner og jakoba vil vel gerne dele de mange point?
Avatar billede schaefner Juniormester
03. maj 2003 - 17:33 #24
Jeg hopper over. Det virkede jo ikke helt som det skulle.
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 17:55 #25
Måske jeg skulle prøve at få min 3. plads tilbage ...
Avatar billede schaefner Juniormester
03. maj 2003 - 18:08 #26
Bare lige for at lære lidt. Hvad gør \d ?
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 18:12 #27
\d er det samme som [0-9]
Avatar billede schaefner Juniormester
03. maj 2003 - 19:31 #28
erik >> Kender du ikke en side der gennemgår brugen af preg_match ?
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 19:32 #29
php.net/preg_match
Avatar billede schaefner Juniormester
03. maj 2003 - 19:57 #30
ja, men lidt mere omkring brugen af \d \b /i og hvad der ellers er.
Avatar billede erikjacobsen Ekspert
03. maj 2003 - 20:01 #31
Samme side, ude til venstre: pattern modifiers og syntax
Avatar billede Slettet bruger
03. maj 2003 - 20:10 #32
Jamen her er der da et tilskud ;)
Avatar billede schaefner Juniormester
03. maj 2003 - 20:11 #33
takker, erik
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