/ 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
simpelt reg-ex spm
Fra : Henrik Jensen


Dato : 13-02-02 17:15

Jeg vil gerne kunne tjekke om en given tekststreng begynder med ét mellemrum
efterfulgt af én bindestreg.

Den tekst der evt. kommer efter bindestregen vil jeg ikke forholde mig til.

Til formålet har jeg forsøgt mig med:

if (ereg ("(^[:space:])+([-])+",$text)){
kode
}
else {andenkode}

Men det resulterer konsekvent i at {andenkode} udføres.
Er der noget galt med mit regulære udtryk?

Pft!
/henrik



 
 
Mogens Meier Christe~ (13-02-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 13-02-02 17:29

"Henrik Jensen" <hj@netwerk.dk> wrote in message
news:Lhwa8.11410$B43.850183@news000.worldonline.dk...

> Jeg vil gerne kunne tjekke om en given tekststreng begynder med ét
mellemrum
> efterfulgt af én bindestreg.

OK, det er ikke det du har formuleret i din regex ;)

> Den tekst der evt. kommer efter bindestregen vil jeg ikke forholde mig
til.

> Til formålet har jeg forsøgt mig med:
>
> if (ereg ("(^[:space:])+([-])+",$text)){
> kode
> }
> else {andenkode}
>
> Men det resulterer konsekvent i at {andenkode} udføres.
> Er der noget galt med mit regulære udtryk?

Ved ikke om paranteserne gør noget mærkeligt. De er i hvert fald
unødvendige. Desuden er de to +'er ikke i overensstemmelse med din
formulering med ét (=og kun ét). Endelig er [:space:] alle former for
whitespaces, dvs. bla. "\t".

Det du formulerede ville jeg udtrykke sådan:

if( ereg("^ -", $text) )
echo "Hooray!";
else
echo "Darn!";

;)

--
Mvh. Mogens
B.Sc. i datalogi. Søger IT-job på Fyn!
www.momech.dk



Niels Andersen (13-02-2002)
Kommentar
Fra : Niels Andersen


Dato : 13-02-02 17:47

"Henrik Jensen" <hj@netwerk.dk> wrote in message
news:Lhwa8.11410$B43.850183@news000.worldonline.dk...
> Jeg vil gerne kunne tjekke om en given tekststreng begynder med ét
mellemrum
> efterfulgt af én bindestreg.
> Den tekst der evt. kommer efter bindestregen vil jeg ikke forholde mig
til.

> if (ereg ("(^[:space:])+([-])+",$text)){

Den tjekker om der startes med ét eller flere tegn, i gruppen "space" (ved
ikke lige hvad den indeholder, men sikkert mellemrum og tabulator og måske
nogle flere), og derefter én eller flere streger.
I hvert fald hvis du lige bytter om på "(" og "^" i starten.

Dette passer bedre til din beskrivelse:

if (ereg('^ -', $text)) {

Men jeg ville nærmere gøre sådan her:

if (substr($text, 0, 2) == ' -') {

--
Mvh.

Niels Andersen



Henrik Jensen (14-02-2002)
Kommentar
Fra : Henrik Jensen


Dato : 14-02-02 16:28

> Dette passer bedre til din beskrivelse:
>
> if (ereg('^ -', $text)) {

Ah - så simpelt kan det gøres

> Men jeg ville nærmere gøre sådan her:
>
> if (substr($text, 0, 2) == ' -') {

Fordi det er hurtigere?

> --
> Mvh.
>
> Niels Andersen
>

Tak for hjælpen!

vh
henrik




Niels Andersen (14-02-2002)
Kommentar
Fra : Niels Andersen


Dato : 14-02-02 16:42

"Henrik Jensen" <hj@netwerk.dk> wrote in message
news:GHQa8.9434$5L3.468369@news010.worldonline.dk...
> > Men jeg ville nærmere gøre sådan her:
> > if (substr($text, 0, 2) == ' -') {
> Fordi det er hurtigere?

Det *er* hurtigere, men det er ikke nogen bekymring for langt de fleste
brugere her i gruppen.

Men det er bedst at bruge den simpleste funktion, som klarer jobbet. Dels
performance, men det sparer også udviklingstid.

Med denne metode slipper du for at bekymre dig om alle de underlige ting,
der er ved regex. Her tænker jeg især på hvornår der skal escapes, og
hvornår der ikke skal.

--
Mvh.

Niels Andersen



Andreas Kleist Svend~ (14-02-2002)
Kommentar
Fra : Andreas Kleist Svend~


Dato : 14-02-02 16:43

On Thu, 14 Feb 2002 16:27:36 +0100
"Henrik Jensen" <hj@netwerk.dk> wrote:

> > Dette passer bedre til din beskrivelse:
> >
> > if (ereg('^ -', $text)) {
>
> Ah - så simpelt kan det gøres
>
> > Men jeg ville nærmere gøre sådan her:
> >
> > if (substr($text, 0, 2) == ' -') {
>
> Fordi det er hurtigere?

Ja, substr er _meget_ hurtigere end ereg, så når det kan lade sig gøre med
substr i stedet er det næsten altid en bedre løsning.

mvh Andreas

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

Månedens bedste
Årets bedste
Sidste års bedste