Avatar billede thulstrup Nybegynder
07. juli 2003 - 09:28 Der er 13 kommentarer og
1 løsning

regular expressions

Jeg har følgende regular expression til at identificere priser (f.eks 150,- og 2452,-):

$priser .= ereg_replace("[0-9]+,\-", '\\0', $indhold);

Hvad skal jeg bruge istedet for \\0, hvis jeg kun vil gemme de resultater der matcher [0-9]+,\- i $priser?
Avatar billede ztyxx Nybegynder
07. juli 2003 - 09:39 #1
kan du ikke gøre det med preg_match
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 09:47 #2
Mener du '[0-9]+,(-|[0-9]+)'  ? Hvad skal der ske med priserbe?
Avatar billede thulstrup Nybegynder
07. juli 2003 - 10:01 #3
ztyxx >> sikkert, men hvordan?

erikjacobsen >> Jeg har en streng som indeholder noget tekst og nogle priser:

$indhold = "2002 Cabernet Sauvignon, Siete vineyard, Santa Molina, Chile 120,-
1999 Saint-Joseph, Domaine Rochevin, Rhone 225,-
2000 Chateau Haut La Greniere, Saint Emilion 190,-";

Alle priser skal så identificeres (x antal cifre efterfuldt af ,-) og gemmes i strengen priser.
Avatar billede ztyxx Nybegynder
07. juli 2003 - 10:10 #4
sådan?
$priser .= preg_match ("/[0-9],-/i",  $_POST["indhold"])
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 10:14 #5
Hvordan skal "priser" se ud?
Avatar billede ztyxx Nybegynder
07. juli 2003 - 10:17 #6
fik ikke læst dit indlæg, preg_match() tillader KUN 0-9 og ,- i mit eksempel, så det kan kun bruges hvis detudvides til at indeholde a-åA-Å
Avatar billede ztyxx Nybegynder
07. juli 2003 - 10:18 #7
måske i virkeligheden også en dårlig løsning
Avatar billede thulstrup Nybegynder
07. juli 2003 - 10:19 #8
ztyxx >> $priser .= preg_match("/[0-9],-/i", $indhold); retunere bare et 1 tal.

erikjacobsen >> Jeg skal bare have samlet alle priser i en streng, måske adskilt af et eller andet tegn.
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 10:27 #9
$indhold = "2002 Cabernet Sauvignon, Siete vineyard, Santa Molina, Chile 120,-
1999 Saint-Joseph, Domaine Rochevin, Rhone 225,88
2000 Chateau Haut La Greniere, Saint Emilion 190,-";


if (preg_match_all("/[0-9]+,(-|[0-9]+)/", $indhold,$r)) {
  $svar=join(' ',$r[0]);
  print $svar;
}
Avatar billede thulstrup Nybegynder
07. juli 2003 - 10:35 #10
Det virke perfekt! Kan du også forklare mig hvad det er der sker?
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 10:39 #11
Også en forklaring? Det ved jeg sandelig ikke ;)
Prøv at spørge lidt mere specfikt.
Avatar billede thulstrup Nybegynder
07. juli 2003 - 10:47 #12
Tror måske at jeg har forstået det alligvel. Alle resultater der matcher mønsteret bliver gemt i arrayet $r og så joiner du dem til en streng. Men hvad betyder $r[0]?
Avatar billede erikjacobsen Ekspert
07. juli 2003 - 10:54 #13
Ok, der kan være flere delmatche angivet med paranteser i det regulære
udtryk. Det hele er nummer 0. Den første (...) er nummer 1, osv.
Dvs. du kan også prøve $r[1] i stedet for $r[0]. Da den matcher alt, er
$r[0] (og de andre) hver især et array af alle mather.
Avatar billede thulstrup Nybegynder
07. juli 2003 - 11:19 #14
Tak, så lærte jeg da det :-)
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