/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
problemer med regulært udtryk...
Fra : Jacob Volstrup


Dato : 29-09-01 14:58

Hej igen,

tidligere har jeg snildt kunnet sortere linier i en fil fra, ved at tjekke
om de startede med '#', ';' eller ' ' (mellemrum), med følgende sætning:
if (ereg("[^\#\;\ ]{1,}", $string)) {
...noget
}
Men nu virker det pludselig ikke i mit igangværende projekt. Har jeg lavet
en fejl et eller andet sted??

På forhånd tak

Mvh Jacob Volstrup



 
 
Niels Andersen (29-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 29-09-01 15:19

"Jacob Volstrup" <volstrup@avanceret.dk> wrote in message
news:_tkt7.2076$Mk2.176427@news000.worldonline.dk...
> ereg("[^\#\;\ ]{1,}", $string)

Mon ikke din ^ sidder på den forkerte side af din [ ?
Der hvor den sidder nu betyder den "not".
ereg('^([#|;| '])', $string, $array)

Mon ikke denne virker. Det tegn, den matcher på, kommer i $array[0] og
$array[1].

Med forbehold for fejl, jeg sidder lige og snakker i telefon...

--
Mvh.

Niels Andersen



Jacob Volstrup (29-09-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 29-09-01 16:10

> Mon ikke din ^ sidder på den forkerte side af din [ ?
> Der hvor den sidder nu betyder den "not".
> ereg('^([#|;| '])', $string, $array)
>
> Mon ikke denne virker. Det tegn, den matcher på, kommer i $array[0] og
> $array[1].

Det virker ikke bedre end mit eget, desværre.

> Med forbehold for fejl, jeg sidder lige og snakker i telefon...

Kan være at det er der problemet skal findes... Hehe

Mvh Jacob Volstrup



Nezar Nielsen (29-09-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 29-09-01 15:25

"Jacob Volstrup" <volstrup@avanceret.dk> wrote in message
news:_tkt7.2076$Mk2.176427@news000.worldonline.dk...
> Hej igen,
>
> tidligere har jeg snildt kunnet sortere linier i en fil fra, ved at tjekke
> om de startede med '#', ';' eller ' ' (mellemrum), med følgende sætning:
> if (ereg("[^\#\;\ ]{1,}", $string)) {
> ...noget
> }

Såvidt som jeg umiddelbart kan se fra den der sætning, så vil den kun matche
på alle instanser af $string der hverken indeholder et space, havelåge eller
semikolon. Dvs. alle linier med et space i vil blive filtreret fra.

prøv at rette til
if (ereg("^[^#;[:space:]]", $string)) {

husk at dine "kommentar-tegn" skal være det allerførste tegn på linien så..
(såvidt jeg husker, dækker [:space:] over både space og tab).

--
Mvh. Nezar Nielsen
http://fez.dk/






Jacob Volstrup (29-09-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 29-09-01 16:09

> prøv at rette til
> if (ereg("^[^#;[:space:]]", $string)) {
>
> husk at dine "kommentar-tegn" skal være det allerførste tegn på linien
så..
> (såvidt jeg husker, dækker [:space:] over både space og tab).

Hmm.. det virker altså ikke, mærkeligt nok. Det underlige er jo også, at min
egen sætning har virket i et andet projekt!

Mvh Jacob Volstrup



Nezar Nielsen (29-09-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 29-09-01 17:12

"Jacob Volstrup" <volstrup@avanceret.dk> wrote in message
news:Pvlt7.1565$Ay.226827@news010.worldonline.dk...
> > prøv at rette til
> > if (ereg("^[^#;[:space:]]", $string)) {
...
> Hmm.. det virker altså ikke, mærkeligt nok. Det underlige er jo også, at
min
> egen sætning har virket i et andet projekt!

så må du altså lige komme på et eksempel på nogle linier der skal matche og
ikke matche..

--
Mvh. Nezar Nielsen
http://fez.dk/




Jacob Volstrup (30-09-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 30-09-01 00:58

> så må du altså lige komme på et eksempel på nogle linier der skal matche
og
> ikke matche..

Jeg har de følgende linier:
#sjov;http://www.sjov.dk
morskab;http://www.morskab.dk
hvor den første skal sorteres fra, da den starter med '#'. Linie nr. 2 skal
medtages.
Men som det fungerer nu, bliver begge linier medtaget. Desværre. Og jeg
forstår ikke hvorfor!

mvh Jacob Volstrup



Nezar Nielsen (30-09-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 30-09-01 16:12

"Jacob Volstrup" <volstrup@avanceret.dk> wrote in message
news:rgtt7.2714$Mk2.214540@news000.worldonline.dk...
> > så må du altså lige komme på et eksempel på nogle linier der skal matche
> og
> > ikke matche..
>
> Jeg har de følgende linier:
> #sjov;http://www.sjov.dk
> morskab;http://www.morskab.dk

Når jeg tester med de to linier(går ud fra at der ikke skulle være noget
mellemrum foran teksten, eftersom det jo så vil matche på space ligegyldigt
hvad), så er det kun morskab jeg får med, se selv her:

http://linux.control.dk/eksempler/ereg_frasortering/

--
Mvh. Nezar Nielsen
http://fez.dk/




Jacob Volstrup (30-09-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 30-09-01 18:28

> Når jeg tester med de to linier(går ud fra at der ikke skulle være noget
> mellemrum foran teksten, eftersom det jo så vil matche på space
ligegyldigt
> hvad), så er det kun morskab jeg får med, se selv her:
>
> http://linux.control.dk/eksempler/ereg_frasortering/
>

Har stadig ikke helt fundet min fejl, men det kom da til at virke, efter min
egen kode blev parret med din.

Tak for hjælpen til dig, samt alle de andre, som har hjulpet mig.

Mvh Jacob Volstrup





Kim Emax (30-09-2001)
Kommentar
Fra : Kim Emax


Dato : 30-09-01 17:41


"Jacob Volstrup" <volstrup@avanceret.dk> skrev


> Jeg har de følgende linier:
> #sjov;http://www.sjov.dk
> morskab;http://www.morskab.dk
> hvor den første skal sorteres fra, da den starter med '#'. Linie nr. 2
skal
> medtages.
> Men som det fungerer nu, bliver begge linier medtaget. Desværre. Og jeg
> forstår ikke hvorfor!

du viser i første eksempel at du køre en if/else betingelse, så dette vil
virke (utestet):

if(ereg("^[\#|\;| ])){
# ignorer
}
else {
# Dot that funky thang!
}

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest advancerede VinWebShop




kim schulz (30-09-2001)
Kommentar
Fra : kim schulz


Dato : 30-09-01 16:41

Jacob Volstrup wrote:
>
> > prøv at rette til
> > if (ereg("^[^#;[:space:]]", $string)) {
> >
> > husk at dine "kommentar-tegn" skal være det allerførste tegn på linien
> så..
> > (såvidt jeg husker, dækker [:space:] over både space og tab).
>
> Hmm.. det virker altså ikke, mærkeligt nok. Det underlige er jo også, at min
> egen sætning har virket i et andet projekt!

kan det ikke været et linieskift problem? din fil er i dos format (med
CRLF) men din php kører i unix mode (med CR) - eller omvendt.
Derfor (er mit gæt) tror den kun at der er 1 lang linie og checker
derfor kun første linie i listen.

MVH
Kim Schulz


--
http://www.schulz.dk - En nørds bekendelser!
Nørdesnak, attitude og alverdens usexede nyheder for nørder

Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408670
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste