Avatar billede hoppe11 Nybegynder
02. juni 2007 - 19:43 Der er 17 kommentarer og
1 løsning

reg exp (alle alfabetiske tegn)

Jeg har en funktion som tjekker om hele strings er skrevet med caps..

I min preg_match angiver jeg a-zæøå, men er det ikke muligt at angive ALLE alfabetiske tegn? Jeg tænker også på ö, ä osv.

function str_capitalize($str)
{
    return preg_replace('/\b(\w)/ie', "strtoupper('\\1')", strtolower($str));
}

if(!preg_match('/[a-zæøå]/', $str)) $str = str_capitalize($str);
Avatar billede windcape Praktikant
02. juni 2007 - 21:02 #1
Du skal IKKE bruge en regex til dette. Istedet bør du bruge ctype_alpha

www.php.net/ctype
Avatar billede windcape Praktikant
02. juni 2007 - 21:03 #2
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 00:33 #3
jeg tror du misforstår..

jeg skal ikke tjekke om de er alfabetiske, men om stringen er skrevet med CAPS

derfor vil jeg høre om man kunne definere alle alfabetiske tegn i sin reg exp på en facon?
Avatar billede windcape Praktikant
03. juni 2007 - 15:41 #4
"jeg skal ikke tjekke om de er alfabetiske, men om stringen er skrevet med CAPS"
Hvorfor var det så du ikke gad læse dokumentationen?

http://dk.php.net/manual/da/function.ctype-upper.php
Avatar billede windcape Praktikant
03. juni 2007 - 15:41 #5
og function str_capitalize($str) kan gøres med www.php.net/strtoupper
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 15:59 #6
sorry.. jeg var lidt for hurtig :)

smid et svar
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 16:01 #7
eller..

den gør ikke helt det jeg går efter

ALDAS1231 vil også gå ind under !ctype_upper()
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 16:02 #8
KLWC139 -> false
LMNSDO -> true
akwSKWsm -> false
Avatar billede windcape Praktikant
03. juni 2007 - 19:04 #9
hvad med at bruge begge dele ? :p
Avatar billede windcape Praktikant
03. juni 2007 - 19:05 #10
return (ctype_alpha($string) && ctype_upper($string))
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 19:59 #11
jamen hvad nu hvis det er en kombineret string? :)

$arr = array('ASDF123','ASdf123','ASDF','ASdf');

echo 'ctype_alpha() && ctype_upper()<br>';
foreach($arr as $v)
{
    if(ctype_alpha($v) && ctype_upper($v)) echo $v.' = true<br>';
    else echo $v.' = false<br>';
}

echo '<br>ctype_upper()<br>';
foreach($arr as $v)
{
    if(ctype_upper($v)) echo $v.' = true<br>';
    else echo $v.' = false<br>';
}

-----------------

ctype_alpha() && ctype_upper()
ASDF123 = false
ASdf123 = false
ASDF = true
ASdf = false

ctype_upper()
ASDF123 = false
ASdf123 = false
ASDF = true
ASdf = false

men det burde give
ASDF123 = false
ASdf123 = true
ASDF = false
ASdf = true
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 20:00 #12
min reg exp virker som den skal, men i stedet for at man skal angive de alfabetiske tegn ville jeg høre om der ikke fandtes en [:alpha:] (<-- mener faktisk den ser sådan ud) som gik ind under alle alpha tegn..
Avatar billede hoppe11 Nybegynder
03. juni 2007 - 20:02 #13
jeg vil gerne være fri for at angive hvert eneste tegn

a-zæøåöäü osv.
Avatar billede windcape Praktikant
04. juni 2007 - 04:05 #14
Dit spørgsmål giver jo stadig ikke mening. Du vil lave alle tegn til uppercase ? hvorfor bruger du så ikke bare strtoupper() ?
Avatar billede windcape Praktikant
04. juni 2007 - 04:06 #15
ahh, faktisk tror jeg du leder efter http://dk.php.net/manual/da/function.ucwords.php
Avatar billede hoppe11 Nybegynder
04. juni 2007 - 16:13 #16
Den gør stadig heller ikke helt det jeg er ude efter

ucwords() -> Asdf Asdf-asdf'asdf
str_capitalize() -> Asdf Asdf-Asdf'Asdf

men kunne du hjælpe mig den syntax der tager alle alfabetiske tegn i reg exp? mener den hedder noget ala [:alpha:]
Avatar billede hoppe11 Nybegynder
04. juni 2007 - 16:15 #17
mit problem er nemlig at min preg ikke kun skal parse danske tegn
Avatar billede hoppe11 Nybegynder
05. juni 2007 - 17:27 #18
det er åbenbart ikke sådan lige til :-/

men tak for din tid :)
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