webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > PHP

PHP Här diskuteras allt som har med scriptspråket PHP att göra.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-07-31, 13:03   #1
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
fråga Regexp: svenska tecken osv....

När användarna i den där dejtingsajten jag postat om förut ska lägga in användarnamn så funkar det inte med svenska tecken.

Just nu är koden:

Kod:
/^\w+$/
Hur ska den se ut för att acceptera svenska tecken, bindestreck och kanske t.o.m. mellanslag?
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:05   #2
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 498
Lösningar: 536
Kod:
/^[\wåäö\- ]+$/
eller
Kod:
/^[\wåäö\-\s]+$/
bör räcka, eller så tror jag php att du kan ställa in att \w tillåter svenska tecken.
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:11   #3
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
Citat:
voigtann1 skrev: Visa inlägg
Kod:
/^[\wåäö\- ]+$/
eller
Kod:
/^[\wåäö\-\s]+$/
bör räcka, eller så tror jag php att du kan ställa in att \w tillåter svenska tecken.
Arghh... alla dessa VAL!!!!
Ska testa med den senare.
Återkommer.
Tack!
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:16   #4
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 498
Lösningar: 536
kan det vara
Kod:
setlocale(LC_ALL,'swedish');
som räcker för att få ditt befintliga regex(om du nu inte vill ha mellanslag och andra "whitespace" tecken)?

annars bör du antingen köra ignore case eller så få du lägga in ÅÄÖ också inne i []
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:19   #5
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
Kod:
/^[\wåäö\-\s]+$/
verkar funka alldeles utmärkt.

Om jag nu ska be om en sak till, så kanske man ska kunna använda svenska tecken i lösenorden också. Just nu är koden:

Kod:
/^(.){4,30}$/i
vilket jag gissar betyder "engelska tecken, minst 4 max 30".
Kan an få in svenska tecken där åxå?
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:22   #6
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 498
Lösningar: 536
det är ett konstigt uttryck du kör där....men () är att du få en referns på vad som finns inne i den och . är "Match any single character that is not a line break character"

du kan nog skrota ( och ) (för jag gissar att du bara använder det för validering), och å ä ö borde redan vara med i det uttrycket.


. är samma sak som: [^\n].
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:22   #7
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
Citat:
voigtann1 skrev: Visa inlägg
kan det vara
Kod:
setlocale(LC_ALL,'swedish');
som räcker för att få ditt befintliga regex(om du nu inte vill ha mellanslag och andra "whitespace" tecken)?

annars bör du antingen köra ignore case eller så få du lägga in ÅÄÖ också inne i []
La till ÅÄÖ.
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:27   #8
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
Citat:
voigtann1 skrev: Visa inlägg
det är ett konstigt uttryck du kör där....men () är att du få en referns på vad som finns inne i den och . är "Match any single character that is not a line break character"

du kan nog skrota ( och ) (för jag gissar att du bara använder det för validering), och å ä ö borde redan vara med i det uttrycket.


. är samma sak som: [^\n].
Heh... du kunde lika gärna prata kinesiska med mig.
Men även lösenordet funkar med å ä ö.
Allt verkar OK, alltså!
Tusen takk!
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:53   #9
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 469
Lösningar: 645
Min åsikt: Tillåt vilka tecken som helst, utom möjligen allmänt dåliga tecken som <, >, och ". Sedan ser du till escapea datat rätt vid utskrift, t ex med htmlspecialchars. Och om du inte använder någon form av prepared statements (men det gör du väl?) självklart mysql_real_escape_string.

Ett annat alternativ är att låta folk välja ett inloggningsnamn som bara kan innehålla a-z och sedan låta ens riktiga namn vara ett separat fält som kan innehålla vilka tecken som helst. Eller, låta folk logga in med e-postadressen, och låta ens riktiga namn vara ett separat fält.

Att bara tillåta a-z + åäö kan vara lite väl begränsande. Du kanske får besök av norrmän eller danskar som bor i Sverige. Eller folk vars namn slutar med é.

Redan nu har du ett problem. Jag tror att åäö bara matchar små bokstäver, eftersom PHP inte vet något om stora och små svenska bokstäver. Så du lär behöva skriva [\wåäöÅÄÖ\-\s]. Om du inte vill göra Örjan Ärla Ågren sur vill säga.
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.
nitro2k01 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 13:56   #10
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 469
Lösningar: 645
[] = Teckengrupp
[^(något här)] = Matcha allt som inte finns i listan
\n = radbrytning
Så när viugtann1 säger att . = [^\n] menar han att . matchar ett valfritt tecken som inte är en radbrytning.
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.
nitro2k01 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 14:29   #11
Danne V
Medlem
 
Danne Vs avatar
 
Registrerad: 2006-08-02
Ort: Karlstad, Värmland
Inlägg: 7 447
Lösningar: 190
Citat:
nitro2k01 skrev: Visa inlägg
Min åsikt: Tillåt vilka tecken som helst, utom möjligen allmänt dåliga tecken som <, >, och ". Sedan ser du till escapea datat rätt vid utskrift, t ex med htmlspecialchars. Och om du inte använder någon form av prepared statements (men det gör du väl?) självklart mysql_real_escape_string.

Ett annat alternativ är att låta folk välja ett inloggningsnamn som bara kan innehålla a-z och sedan låta ens riktiga namn vara ett separat fält som kan innehålla vilka tecken som helst. Eller, låta folk logga in med e-postadressen, och låta ens riktiga namn vara ett separat fält.

Att bara tillåta a-z + åäö kan vara lite väl begränsande. Du kanske får besök av norrmän eller danskar som bor i Sverige. Eller folk vars namn slutar med é.

Redan nu har du ett problem. Jag tror att åäö bara matchar små bokstäver, eftersom PHP inte vet något om stora och små svenska bokstäver. Så du lär behöva skriva [\wåäöÅÄÖ\-\s]. Om du inte vill göra Örjan Ärla Ågren sur vill säga.
tack f lektion (som jag glömt om typ åtta minuter...)

Det du skriver om ø och é tänkte jag inte ens på. Så då är det ju bättre att släppa in alla tecken (utom de jävligaste.) Hur ska det stå då?

Citat:
nitro2k01 skrev: Visa inlägg
Sedan ser du till escapea datat rätt vid utskrift, t ex med htmlspecialchars. Och om du inte använder någon form av prepared statements (men det gör du väl?) självklart mysql_real_escape_string.
Njae.... vill inte ge mig in i mer sofistikerat fixande. Inte just nu i alla fall.....(nu ere fotboll serru)
__________________
Med vänlig hälsning från
Danne
------
Proformica.com Marknadsföring, webbdesign, webbhotell osv, mm..
Sacred Skin Ny bok om Sak Yant, traditionell, spiritistisk thailändsk tatueringskonst
Våga Vägra
FaceBook
Danne V besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 14:36   #12
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 498
Lösningar: 536
Citat:
Danne V skrev: Visa inlägg
Det du skriver om ø och é tänkte jag inte ens på. Så då är det ju bättre att släppa in alla tecken (utom de jävligaste.) Hur ska det stå då?
Kod:
^[^<>]+$
är alla tecken förutom < och > så vilka de jävligaste är vet jag inte
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker inte forumet just nu   Svara med citat
Äldre 2012-07-31, 19:19   #13
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 469
Lösningar: 645
De jävligaste bör väl öven inkludera ", ' och &. Dock ska väl inte det spela någon roll eftersom strängen ska fixas till på alla ställen där det spelar någon roll. Om man däremot går efter vad som kan förekomma i namn kan jag garantera att inga namn innehåller < eller >. " och & kanske nästan kan ingå i något namn. ' finns däremot definitivt i en del irländska namn.

Men som sagt, kör strängen genom htmlspecialchars vid precis alla utskrifter

så fort OS är över.

^[^<>\"\&]+$ borde duga så länge.
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.
nitro2k01 besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > PHP

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 01:15.


Powered by: vBulletin Version 3.8.6
Copyright © webForum