Avatar billede lares Nybegynder
20. maj 2006 - 02:30 Der er 14 kommentarer og
2 løsninger

Replace alt ukendt med spørgsmålstegn

Jeg har en "tagwall", som jeg har sat til at replace alle bogstaver, tal og enkelte tegn med billeder.

Men kan man på nogen måde replace et ukendt tegn med "?" ...
Altså alle tegn, der ikke er a-z, A-Z, æøåÆØÅ eller !?.,:;-_*)( - de skal laves om til spørgsmålstegn.
Avatar billede nielle Nybegynder
20. maj 2006 - 06:53 #1
Sådan:

$string = "Altså # alle £ tegn, ¤ der & ikke er a-z, A-Z, æøåÆØÅ eller !?.,:;-_*)( - de skal laves om til spørgsmålstegn.";
$string = preg_replace("/[^a-zæøåÆØÅ!?.,:;_*)(-]/i", "?", $string);
Avatar billede lares Nybegynder
20. maj 2006 - 15:06 #2
Tusind tak :) Nu virker det, som det skal.
Bortset fra at man ikke kan få lov til at skrive \
Avatar billede nielle Nybegynder
20. maj 2006 - 15:39 #3
Du havde jo heeller ikke \-tegnet på listen over lovlige tegn.

Sådan:

$string = preg_replace("/[^a-zæøåÆØÅ!?.,:;_*)(\-]/i", "?", $string);
Avatar billede lares Nybegynder
20. maj 2006 - 16:24 #4
Hmm ... Det virker ikke.
Backslash bliver ved med at blive til et spørgsmålstegn.
Kan man på nogen måde klemme en chr() ind i det?
Avatar billede olebole Juniormester
20. maj 2006 - 16:26 #5
<ole>

Det er vel:
    $string = preg_replace("/[^a-zæøåÆØÅ!?.,:;_*)(\\-]/i", "?", $string);

/mvh
</bole>
Avatar billede olebole Juniormester
20. maj 2006 - 16:28 #6
nielle >> en backslash bruges jo til at escape specialtegn med - derfor skal den selv escapes, hvis den skal optræde som en backslash og ikke bare escape det næste tegn  :)
Avatar billede lares Nybegynder
20. maj 2006 - 16:32 #7
Ole > Ja, det syntes jeg også gav mest mening, men den vil alligevel ikke :(
Avatar billede olebole Juniormester
20. maj 2006 - 16:48 #8
Jeg er på vej udaf døren, men hvis ingen andre har kikket på det, skal jeg prøve, hvis jeg stadig kan finde laptoppen, når jeg kommer hjem igen  :)
Avatar billede nielle Nybegynder
20. maj 2006 - 17:00 #9
Prøv med:

$string = preg_replace("/[^a-zæøåÆØÅ!?.,:;_*)(\\\\-]/i", "?", $string);
Avatar billede nielle Nybegynder
20. maj 2006 - 17:05 #10
Specialtegn skal normalt ikke escapes når de er inde mellem []-parenteser. F.eks. vil [.] kun matche et punktum, og ikke ”et vilkårligt test” som når det er udenfor.

Dette er på regexp-niveauet, men så er der jo også PHP-niveauet hvor at \-tegnet har en special-funktion. F.eks. når man skriver \n, \t eller \r i en streng.

Hvis der kun blev escapet på PHP-niveauer, så burde 20/05-2006 16:26:33 koden være nok, men hvis der escapes nåde i PHP og i regexp så er det vist 20/05-2006 17:00:10 der skal til.
Avatar billede lares Nybegynder
20. maj 2006 - 17:06 #11
Fantastisk. Så virker det.
Tak for hjælpen :]
Avatar billede nielle Nybegynder
20. maj 2006 - 17:11 #12
Svar :^)

Jeg deler gerne med olebole på denne her :^)
Avatar billede olebole Juniormester
21. maj 2006 - 02:46 #13
- dooohh ... sæ'fø'li' ... en tyver er rigeligt til mig, tak  :)
Avatar billede lares Nybegynder
21. maj 2006 - 16:00 #14
Sådan. Og tak for hjælpen igen :)
Avatar billede olebole Juniormester
21. maj 2006 - 17:12 #15
- og tak for points :)
Avatar billede nielle Nybegynder
21. maj 2006 - 21:26 #16
Tak for point :^)
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