Avatar billede x4all_dk Nybegynder
31. januar 2006 - 00:23 Der er 12 kommentarer og
1 løsning

se om parantes, rund som kantet, i streng

Jeg har lidt problemer med at se om en streng
indeholder f.eks. "[]" eller "()".

Hvordan kan jeg gøre det ?
Avatar billede arne_v Ekspert
31. januar 2006 - 02:44 #1
regular expression vil jeg tro
Avatar billede tjp Mester
31. januar 2006 - 04:31 #2
Enig, medmindre paranteserne skal være matchede i ubegrænset omfang...

Følgende burde returnere false hvis tegnene ikke findes (det er ikke testet og kan formentlig undvære et par backslashes):

preg_match("/[[\]\(\)]/", "Streng der skal testes")
Avatar billede jakobdo Ekspert
31. januar 2006 - 07:47 #3
Tror du ikke ikke noget stil med:
preg_match('/\(|\)|\[|\]/', $tekst)
Avatar billede x4all_dk Nybegynder
31. januar 2006 - 12:17 #4
Jeg har forsøgt at lave det med en ereg() men det virker ikke for mig :(

Det som jeg helt præcist vil lave er at teste om en given string indeholder det
man søger f.eks. "[2]" eller "()" eller...

Jeg anvender:

if (eregi($search, $test_string))
{
  // match
}
else
{
  // ikke match
}

og hvis jeg så søger på "[" så får jeg denne fejl:
Warning: eregi() [function.eregi]: REG_EBRACK
Avatar billede tjp Mester
31. januar 2006 - 14:03 #5
Prøv at escape den med \ og hvis det hjælper, så må din funktion tilføje \ foran alle problematiske tegn i søgeteksten, bla: [,],*,(,),- og +.

>>jakobdo

"/[[\]\(\)]/" og '/\(|\)|\[|\]/' er det samme udtryk. ;-)
Avatar billede jakobdo Ekspert
03. februar 2006 - 12:48 #6
tjp: Du escaper jo ikke nummer 2: [
Avatar billede tjp Mester
03. februar 2006 - 14:30 #7
Jeg antager, at når den kommer lige efter den anden er der ikke tvivl om at det er et tegn og ikke et metategn. Men virker det ikke, kan man jo altid escape.
Avatar billede jakobdo Ekspert
03. februar 2006 - 18:41 #8
:o)
Avatar billede x4all_dk Nybegynder
06. februar 2006 - 11:55 #9
Findes der en smart funktion til at tilføje "\" foran alle "(", ")", "[" og "]" ?
Avatar billede x4all_dk Nybegynder
06. februar 2006 - 11:56 #10
måske ereg_replace('(', '\(');  osv ?
Avatar billede jakobdo Ekspert
06. februar 2006 - 12:21 #11
Hvorfor vil du tilføje \ foran dem alle?
Avatar billede x4all_dk Nybegynder
30. marts 2006 - 23:26 #12
Jeg fik det til at virker, takker for hjælp!
Avatar billede morhan Novice
30. marts 2006 - 23:31 #13
/[][()]/

hvis du vil slippe for alle de grimme backslashes
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel