[PHP] Het tegen gaan van shoutberichten op een forum

Pagina: 1
Acties:

  • Devour
  • Registratie: Februari 2000
  • Laatst online: 15-05 09:44

Devour

Inspirator

Topicstarter
Ik vraag me af hoe ik een wat schreeuwerig bericht op een forum, wat in allemaal hoofdletters is geschreven, kan omzetten naar kleine letters. Dat kan natuurlijk met een constructie zoals dit : ucfirst(strtolower($post_message)
Maar dan is het eerste woord van de posting een hoofdletter en met ucword zijn alle eerste letters van alle woorden groot.

Wat ik zoek is een functie die alle eerste woorden van een zin een hoofdletter geeft.
Iemand een idee?

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.


Verwijderd

euh .. een spellingchecker zoals in Word?
Maar weet je zeker dat je dit wilt op een (ik neem aan jouw) forum? Of controleer je eerst of het bericht helemaal in caps is getypt?
Ik kan me namelijk goed voorstellen dat hoofdletters ook gebruikt worden in UsErNaMeS of door iemand die een PUNT duidelijk wil maken maar niet weet hoe het ook kan.

Ik kan je trouwens niet helpen, veel te weinig kennis van ingebakken functies.
Maar misschien kan je een bericht opdelen, knippen op de '. ' (punt dus). Vervolgens op elk stukje een ucfirst en dan de boel weer aan elkaar plakken.

edit:
Hoe wil je eigenlijk zinnen onderscheiden? Ik ga er nu wel van uit dat je dat op de '.' doet maar ook daar willen mensen wel eens creatief mee omgaan
;)

En eigenlijk vind ik dit 'not done', mensen hebben het recht om te reageren (zolang het taalgebruik binnen de perken blijft). Als een posting tegen de policy ingaat moet de moderator zelf ingrijpen, bericht handmatig aanpassen en eventueel de poster een penalty of ban geven.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Kan dit niet worden opgelost met een regexje?

http://www.php.net/manual/en/ref.pcre.php

  • Devour
  • Registratie: Februari 2000
  • Laatst online: 15-05 09:44

Devour

Inspirator

Topicstarter
Baaf ik ben het wel met je eens dat gebruikers de vrijheid moeten hebben om hun berichten te plaatsen zoals zij zelf willen. Het probleem is alleen dat de moderators er nu veel meer werk van hebben omdat bepaalde mensen niet snappen dat je dat soort berichten niet moet plaatsen. Om de moderators van het forum wat te ontlasten wou ik daar even een stukje voor schrijven. Lastiger dan ik in eerste instantie dacht.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 17:39
Je zou kunnen kijken of er meer dan X % van de letters een hoofdletter is. Is bijvoorbeeld meer dan 20% van de letters een hoofdletter, dan breek je 'm op bij de '. '. Lowercasen, eerste letter capitalizen, terugsturen.

klaar!

Verbouwing


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Mithrandir schreef op 28 september 2002 @ 08:29:
Je zou kunnen kijken of er meer dan X % van de letters een hoofdletter is. Is bijvoorbeeld meer dan 20% van de letters een hoofdletter, dan breek je 'm op bij de '. '. Lowercasen, eerste letter capitalizen, terugsturen.

klaar!
20% vind ik wel erg weinig. De MeEsTe BrEezaH ChIcKs HaLeN 50%, zonder dat het heel erg schreeuwerig over komt. Ik zou mikken op >80% van de letters.
Waarschijnlijk is het ook beter om een lijst met veelvoorkomende afkortingen, en een mogelijkheid om het uit te zetten...

Localhost, sweet localhost


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 17:39
Maar dan nog; BreeZah ChIcKs ZiJn OoK irritant nietwaar? 20% is al erg veel; als je gewoon iets typt haal je dat niet.

Waarom zou je Breezah Chicks gedogen? Dat is toch ook zwaar irritant?

Verbouwing


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Daar is maar 1 manier voor: http://www.php.net/manual/en/function.levenshtein.php O+
Wat een functienaam O+

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Ik zou de check doen en vervolgens het bericht gewoon weigeren. Laat de user het maar zelf verbeteren, dan irriteert ie zich er meteen aan en zal de volgende keer maar besluiten netjes te posten.

Verder lijkt me de 80% Hoofdletter check niet zo moeilijk uit te voeren. Desnoods ga je kijken of er niet toevallig een hele zin in hoofdletters staat, of meer dan 2 uitroeptekens (!) achter elkaar.

|_____vakje______|


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Van php.net:
PHP:
1
2
3
if ((strlen($subject)>10) and ( ( levenshtein ($subject, strtolower ($subject) / strlen ($subject) ) > .3 ) ){ 
  $subject = strtolower($subject); 
}


Wat je dus doet is, je lowercased het woord vergelijkt dat met het niet gelowercased woord met de levenshtein functie. Dit produceerd een nummer. Dit nummer geeft het aantal verschillen aan.

Best makkelijk eigenlijk

[ Voor 0% gewijzigd door Slagroom op 29-09-2002 12:07 . Reden: Toevoeging ]


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

heb je al even gekeken naar de performance van levensteihn? Dat is echt rampzalig!

Localhost, sweet localhost


  • Spleasure
  • Registratie: Juli 2001
  • Laatst online: 26-08 09:10

Spleasure

Ik hier?

Tsja, prioriteiten stellen ....

Verwijderd

kvdveer schreef op 29 september 2002 @ 12:46:
heb je al even gekeken naar de performance van levensteihn? Dat is echt rampzalig!
heb jij dan een manier die beter werkt?
Pagina: 1