Avatar billede jeg_var_gangsta Nybegynder
03. august 2005 - 23:08 Der er 9 kommentarer og
1 løsning

Max 5 ens tegn i træk

Hej.

Jeg skal have lavet et script, som kan sørge for, at der max. må komme 5 ens tegn i træk i en $string. Kan det lade sig gøre? Og hvor skal jeg evt. starte?

MVH Christian
Avatar billede medions Nybegynder
03. august 2005 - 23:11 #1
echo substr($string, 5);

//>Rune
Avatar billede medions Nybegynder
03. august 2005 - 23:12 #2
if (size($string) > 5) {
  echo substr($string, 5);
}

måske?

//>Rune
Avatar billede jeg_var_gangsta Nybegynder
03. august 2005 - 23:17 #3
Hmm..

Mit spørgsmål slal forstås sådan:
"Hej jeg hedder Bruger, og jeg opretter hermed et indlæg med maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaannnnnnnnnnnnnnnnnnnnngggggggggggggggeeeeeeeeeeeeeeeeeeee ens tegn i træk"
bliver til:
"Hej jeg hedder Bruger, og jeg opretter hermed et indlæg med maaaaannnnngggggeeeee ens tegn i træk".

Den er ikke helt nem, men jeg tror det kan lade sig gøre...
Avatar billede medions Nybegynder
03. august 2005 - 23:27 #4
Okay, så gør du det at du laver en explode() altså splitter på hver mellemrum du har og får derved din sætning lagt i et array... Herefter spørger du så på hver post i arrayet, hvor mange chars der er i posten... Sådan bære du dig ad...

//>Rune
Avatar billede jeg_var_gangsta Nybegynder
03. august 2005 - 23:30 #5
Ja, men hvad så hvis en bruger skriver et ord på over 5 bogstaver?(!) Det er jo kun hvis de er ens, de skal skæres ned..
Avatar billede jeg_var_gangsta Nybegynder
03. august 2005 - 23:30 #6
Alt over 5 ens tegn i træk bliver cuttet af.
Avatar billede ksoren Nybegynder
03. august 2005 - 23:38 #7
$str = <din spam streng>;

$str = preg_replace("/((.)\\2{0,4})\\2*/", "\\1", $str);
Avatar billede jeg_var_gangsta Nybegynder
03. august 2005 - 23:50 #8
ksoren > Det kører! Genialt!

Smid et svar, og hvis du har tid, må du gerne forklare hvad der sker i din preg_replace, da ikke er helt med :)

Har du evt. et link med en *rigtig* god vejledning til regexp? Dem jeg har fundet har virket mere forvirrende end informerende.

MVH Christian
Avatar billede ksoren Nybegynder
04. august 2005 - 00:05 #9
((.)\\2{0,4})\\2*

parenteserne bruges til at gruppere udtrykket, og fange det som står indeni.

\\1 fanger det som står i den ydre parentes
\\2 fanger det som står i den indre parentes (punktumet)

. giver match på alle tegn

\\2 referer derfor til det tegn som er fundet

\\2{0,4} siger at det fundne tegn må komme 0 eller 4 gange efter, dvs i alt 5 gange

\\2* hvis vi har flere end 5 tegn, finder denne resten

--

((.)\\2{0,4}) finder således de føste fem karakterer i spamstrengen
\\2* finder resten

"dem fem tegn + resten" bliver erstattet med de fem første tegn
og således arbejder udtrykket sig igennem hele strengen.

Jeg har ikke lige nogle links ved hånden, men google kan finde mange :)
Avatar billede jeg_var_gangsta Nybegynder
04. august 2005 - 00:12 #10
Ok, mange tak for din uddybende beskrivelse!
Jeg fandt det her link: http://weblogtoolscollection.com/regex/regex.php som ifølge forfatteren er et sammendrag af mange sider, som beskæftiger sig med regular expressions og deres brug i PHP. Det kan være nogen derude kan bruge det :)

MVH Christian
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