|
| 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
| |
|
|