Avatar billede krydset Nybegynder
08. august 2004 - 21:52 Der er 15 kommentarer og
1 løsning

eregi ikke forstået

Hejsa, sidder og prøver og forstå lidt eregi og har lavet det her helt simpe


<?PHP
$string = "iok";
if(eregi("^ok$", $string)) {
    echo "Right";
} else {
    echo "false";
}
?>

Den skulle tjekke om $string starter eller ender på ok.
Den ender på ok, men alligevel udskriver den false Hvorfor ??
Avatar billede squashguy Nybegynder
08. august 2004 - 21:56 #1
"^ok$" betyder at den både skal starte med OG ende på "ok", dvs strengen på ikke indeholde andet end "ok"

"ok$" skal blot ende på ok
Avatar billede squashguy Nybegynder
08. august 2004 - 21:57 #2
^ok.*ok$

så kan der stå hvad som helst imellem
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:03 #3
if(eregi("^ok", $string)||eregi("ok$", $string)) {
Avatar billede krydset Nybegynder
08. august 2004 - 22:12 #4
Ja erik, dit foreslag er helt fint. Men jeg vil have det i en reg_exp altså kun en eregi.

squash hvad betyder Din * i din eregi ??
Avatar billede krydset Nybegynder
08. august 2004 - 22:12 #5
squash hvad betyder Din * & . i din eregi ??
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:16 #6
Det kan du også godt få - det var bare første skridt på vejen, som du måske selv kunne have regnet ud. Jeg vil ikke garantere at alle udgaver af reg-exp implementationer vil
vise denne korrekt, men PHPs eregi ser ud til at klare det:

  if (eregi('(^ok)|(ok$)',$streng)) {
Avatar billede krydset Nybegynder
08. august 2004 - 22:21 #7
Okay. det er altså ikke helt efter standarden på den måde kan jeg forstå. hva med
squash foreslag

Hvad betyder "*" & "." i den sætning
^ok.*ok$
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:26 #8
Jeg tror ikke squashguys version virker efter hensigten.
Joh, det skal nu nok virke, det jeg foreslår, men i meget gamle dage prøvede
jeg noget lignende uden held, derfor et lille forbehold.
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:27 #9
Og jeg glemte at sige at det også virker med:
  if (preg_match('/(^ok)|(ok$)/i',$ok)) {
Avatar billede krydset Nybegynder
08. august 2004 - 22:28 #10
Okaj. takker for hjælpen. Du vil vel ikke have point hvis jeg gætter rigtigt ??
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:29 #11
Nej tak
Avatar billede krydset Nybegynder
08. august 2004 - 22:33 #12
Godt fortsat god aften :-P
Avatar billede krydset Nybegynder
08. august 2004 - 22:35 #13
hvor lang tid har du egentlig brugt på at komme op på det php stadie du er på erik ??
Avatar billede erikjacobsen Ekspert
08. august 2004 - 22:48 #14
hele livet - php er en biting, en logisk og matematisk funderet tankegang er vigtgst.

(og så min hemmelighed: jeg springer spørgsmål over jeg ikke kan svare på...)
Avatar billede jakoba Nybegynder
08. august 2004 - 22:59 #15
.  betyder 'ethvert bogstav passer her
*  betyder 'foregående bogstav (eller gruppe) kan være gentaget 0 til uendeligt mange gange'

andre almindelige kodebogstaver:

^  betyder 'forrest i strengen'
$  betyder 'bagerst i strengen'
+  betyder 'foregående bogstav (eller gruppe) kan være gentaget 1 til uendeligt mange gange'

{ og }  bruges til at omkranse specifikationer af hcormange gange noget skal gentages
[ or ]  bruges til at omkranse sæt af bogstaver der kan matche der
( og )  bruges til at omkranse 'grupper'

fx:
eregi( "banan", "banan" );  // ja naturligvis er de to strenge ens. men denne vil også matche ths anden streng er "unodne bananer smager skidt", bare der står banan et sted i strengen
eregi( "^banan$", "banan" );  // matche KUN hvis der ikke er noget foran og heller ikke noget bagefter
eregi( "^b(an){2,2}$", "banan" );  // gruppen 'an' skal være gentage mindst 2 og højest 2 gange
eregi( "^b(an)+$", "banan" );      // gruppen 'an' skal være gentaget mindst en gang.
          // den matcher "ban", "banan", "bananan", "banananan", osv
eregi( "^b[an]+$", "banan" );      // enhever sekvens af 'a'er og 'n'er er ok
          // den matcher "ba", "bn", "baa", "ban", "bna", "bnn", osv.

de kan sættes sammen så det bliver grueligt kompliceret.
Avatar billede krydset Nybegynder
09. august 2004 - 12:01 #16
takker for en go opsang jacoba
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