Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php - preg_match()

Skapad av torchi12, 2010-08-02 16:31 i Webbutveckling & Programmering

4 001
21 inlägg
0 poäng
torchi12
Visningsbild
Hjälte 547 inlägg
0
Jag hittade hur man använder preg_match istället för ereg.
Men det funkar inte för mig!
Någon som kan hjälpa mig?

Här är min PHP kod:

if( isset($name) ) { test(); }

function test()
{
if(preg_match('/[^0-9A-Za-z]/',$name))
{
echo "Submitted name: $name ";
}

else
{
echo "Duuuuude! Can't you read?! <br /> /FacePalm";
}
}

Crazy Loop - Crazy Loop

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0

Svar till torchi12 [Gå till post]:
Vad får du för felmeddelande eller vad händer som inte borde hända?

Ingen status

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till gaminggirl [Gå till post]:

På fältet som har variabeln $name skriver jag in t.ex. Az
då körs else funktionen!
=(

Crazy Loop - Crazy Loop

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0
Någon??

Crazy Loop - Crazy Loop

iknor
Visningsbild
P 36 Älvsjö Hjälte 3 065 inlägg
0

Svar till torchi12 [Gå till post]:

preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match.

Måste du inte göra en if-sats som kontrollerar att "1" returneras?

Det är ingen orm, det är en ödla

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till iknor [Gå till post]:

Va?!?!
Jag har kollat runt och inte hittat något som ska tyda på att den ger tbx 1 eller 0.....

Här är ett exempel från http://php.net/manual/en/function.preg-match.php
:
"
<?php
// The "i" after the pattern delimiter indicates a case-insensitive search
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>
"

Crazy Loop - Crazy Loop

Polkagrisen
Visningsbild
P Vittangi Hjälte 733 inlägg
0

Svar till gaminggirl [Gå till post]:

Du skrev:
"Vad får du för felmeddelande eller vad händer som inte borde hända?"

Och TS svarade dig:
"På fältet som har variabeln $name skriver jag in t.ex. Az
då körs else funktionen!
=("


Han kanske förväntar sig ett svar av dig?

Jag hette tidigare...

iknor
Visningsbild
P 36 Älvsjö Hjälte 3 065 inlägg
0

Svar till torchi12 [Gå till post]:

Jag har ingen aning, jag bara googlade ^^
Men i det exemplet som du skrev så letade funktionen efter teckensträngen "php" (stora eller små bokstäver spelar ingen roll tack vare i:et)
I din kod så kanske funktionen letar efter den exakta teckensträngen "^0-9A-Za-z"?
Testa att skriva så, och kolla om else-funktionen fortfarande körs.

Det är ingen orm, det är en ödla

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till iknor [Gå till post]:

Jag skrev a (som ska hittas för att jag skrev med a-z).
Jag testade med att lägga till ett i men det funkade inte heller.

Crazy Loop - Crazy Loop

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Det här borde fungera (:

http://pastebin.com/mMnjvjVT

Jag är ond!

iknor
Visningsbild
P 36 Älvsjö Hjälte 3 065 inlägg
0

Svar till torchi12 [Gå till post]:

Men testa att skriva den exakta teckensträngen. Det är möjligt att du måste skriva på ett visst sätt för att funktionen ska fungera för alla bokstäver mellan a-z.


Det är ingen orm, det är en ödla

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0
Svar till Tvillingen [Gå till post]:

Tack!!

Bara en fråga....

if(isset($name)) {test($name);}

function test($name)

varför måste $name vara inuti () hos funktionen och när man kallar på funktionen??? -testade att bara skriva test() och det funkade inte då-


if(preg_match('/^[0-9a-zA-Z]+$/',$name))

vad ska +$ betyda??







Tillägg av torchi12 2010-08-02 17:58

Det funkade även utan +$ så vad tusan är det för något?

Crazy Loop - Crazy Loop

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0

Svar till torchi12 [Gå till post]:

Funktionen test tar en parameter och skickar du inte med någon parameter så fungerar inte funktionen. Din funktion fungerar inte om den inte vet vad $name är och för att den ska veta vad $name är så måste man skicka med den via en parameter eller använda global. Global är inte att föredra.

Angående +$ så är det för att den ska titta igenom hela variabeln från början till slutet (:

Jag är ond!

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0
Svar till Tvillingen [Gå till post]:

vet du hur man kan göra följande:
typ om jag vill ha "green" i variabeln $name och sedan måste den ha 1 bokstav a-z hur gör jag då?

" btest b" kollar efter "test" men bara som ett eget ord, alltså testmilk funkar inte men test milk funkar.

Ska finnas backslash bakom b'na men det går inte att skriva här

Crazy Loop - Crazy Loop

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till torchi12 [Gå till post]:
Jag har kollat runt och inte hittat något som ska tyda på att den ger tbx 1 eller 0.....

Jag lovar, bästa stället att kolla runt på är dokumentationen...
Från http://se.php.net/manual/en/function.preg-match.php : "preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match."

Nu är det så att PHP i det här fallet automatiskt konverterar 0 till false och 1 till true.



Svar till torchi12 [Gå till post]:
På fältet som har variabeln $name skriver jag in t.ex. Az
då körs else funktionen!


Det är för att du har gjort ett regexp som matchar "ett tecken som inte är a-z, A-Z eller 0-9". Dvs din if-sats är "om det finns något tecken med i $name som inte är en engelsk bokstav eller en siffra så...". Allt blir bra om du bara byter plats på utskrifterna.


Svar till torchi12 [Gå till post]:
vet du hur man kan göra följande:

Kolla http://se.php.net/manual/en/reference.pcre.pattern.syntax.php .

typ om jag vill ha "green" i variabeln $name och sedan måste den ha 1 bokstav a-z hur gör jag då?


Lite otyglig men om du menar att $name ska vara 6 tecken låg, där de första 5 är "green" och den 6:e är en boktav a-z så föreslår jag: '/^green[a-z]$/'. '^' matchar början på strängen, 'green' matchar exakt 'green', '[a-z]' matchar ett tecken a-z och '$' matchar slutet på strängen.

" btest b" kollar efter "test" men bara som ett eget ord, alltså testmilk funkar inte men test milk funkar.

Korrekt, fast jag hade tagit bort mellanslaget efter 'test', annars matchar det inte tex 'milk test'.

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till cower [Gå till post]:
Det funkade ju inte alls?

if(preg_match('/^green[a-zA-z0-9_.]$/',$usr))

funkar inte alls.
skriver in 'green' och det funkar inte


Crazy Loop - Crazy Loop

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0
förstår miginte på preg_match funktionen...
GEGEDHYT#¤#½!R"THYTJY;GJGTHegsw

Crazy Loop - Crazy Loop

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0

Svar till torchi12 [Gå till post]:

Då är det bättre att du tar och lär dig så slipper du ställa massvis med frågor :)

http://www.regular-expressions.info/

Här kan du testa lite så går det snabbare.

http://gskinner.com/RegExr/

Jag är ond!

torchi12
Visningsbild
Hjälte 547 inlägg
Trådskapare
0

Svar till Tvillingen [Gå till post]:

online guider suger som fan

Crazy Loop - Crazy Loop

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0


Jag är ond!

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0


Svar till torchi12 [Gå till post]:
Det ver kanske inte så konstigt att det inte matchade - "ska vara 6 tecken låg, där de första 5 är "green" och den 6:e är en boktav a-z" - det passar typiskt inte in på 'green'.


Forum » Datorer & IT » Webbutveckling & Programmering » Php - preg_match()

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons