string wijzigen zodat er altijd na een "-" een hoofdletter komt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arie Kant

Arie Kant

31/01/2013 16:47:41
Quote Anchor link
Hallo,

Ik probeer een functie te maken die ervoor zorgt dat als men een achternaam invult in een formulier, deze voldoet aan onderstaande eisen:

- alle woorden beginnen met een hoofdletter
- als er een streep (-) wordt gebruikt, dan moet de eerstkomende letter ook een hoofdletter worden.

Nu is het eerste punt niet zo'n probleem :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function validateAchternaam() {
  $res .= ucwords(strtolower($_POST["achternaam"]));
  $_POST["achternaam"] = $res;    
}


Maar hoe kan ik dit nu aanpassen dat er ook na elke - een hoofdletter komt?

Dus ik vul b.v. nu in : naam-meisjesnaam, dan wordt dit gewijzigd naar Naam-meisjesnaam

Als ik zou invullen naam - meisjesnaam, dan zou het wel goed gaan, n.l. Naam - Meisjesnaam

Nu heb ik al wel gevonden door strpos dat ik kan vinden of en zo ja op welke positie deze - staat maar daarna stopt het een beetje ............. ;-)

Oftewel iemand enig idee hoe ik daarna verder moet om de eerste waarde na een - ook naar een hoofdletter te wijzigen?

Met vriendelijke groeten,

Arie
 
PHP hulp

PHP hulp

24/04/2024 15:50:21
 
Ward van der Put
Moderator

Ward van der Put

31/01/2013 16:56:00
Quote Anchor link
Ik zou ucwords() links laten liggen, want dat gaat problemen geven bij tussenvoegsels zoals "van der". Neem maar van mij aan dat heel veel systemen daar idioot veel moeite mee hebben...
 
Arie Kant

Arie Kant

31/01/2013 17:03:23
Quote Anchor link
Bedankt voor je reactie al kan ik die niet helemaal plaatsen ............ ;-)

Ik heb al een apart veld voor tussenvoegsels dus als het goed is komen die al daarin terecht.

Natuurlijk kan het ook met ucfirst maar dan moet ik weer eerst alle woorden in een aparte string gooien en een lus maken. De velden komen sowieso in ons eigen systeem binnen dus mocht ik problemen krijgen met voorletters, dan kan ik dat in ieder geval vrij snel oplossen ;-)

Maar het ging mij even om de uitdaging om na een - ook een hoofdletter te krijgen, iemand een suggestie?
 
Rick van Riel

Rick van Riel

31/01/2013 17:07:56
Quote Anchor link
Je kunt dit doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$explods
= explode('-', $naam);
foreach($explods as $explode) {
    $newNaam[] = ucfirst(trim($explode));
}

$naam = implode('-', $newNaam);

?>
 
Ward van der Put
Moderator

Ward van der Put

31/01/2013 17:13:54
Quote Anchor link
In drie simpele stappen dicht bij je eerste gedachte:

1. '-' tijdelijk vervangen door ' - ' met spaties;
2. ucwords() eroverheen;
3. ' - ' weer vervangen door '-'.

Maar dat lost het probleem zoals gezegd niet op, want soms moet er wél een hoofdletter na het streepje en soms juist niet. Vlamingen schrijven bijvoorbeeld meestal 'Van' waar Nederlanders 'van' gebruiken bij een tussenvoegsel.
 
Arie Kant

Arie Kant

31/01/2013 17:20:04
Quote Anchor link
Dat is inderdaad een simpele oplossing in de categorie "die had ik ook wel moeten kunnen verzinnen" ........ ;-) maar ja, daar valt wel vaker een oplossing onder hahahahahaha

Allebei bedankt voor de input, hiermee moet ik wel weer verder kunnen!
 
Kris Peeters

Kris Peeters

31/01/2013 17:24:40
Quote Anchor link
Ik vind het sowieso not done dat je de input van de gebruiker zomaar gaat veranderen.
Zeker wanneer er uitzonderingen zijn; en je weet dat die er zijn (is al vermeld).

Je kan met javascript de aandacht trekken en ergens zetten: "bedoelde je ... ?".
Maar je geeft de gebruiker het laatste woord.
 
Arie Kant

Arie Kant

01/02/2013 13:40:01
Quote Anchor link
Kris Peeters op 31/01/2013 17:24:40:
Ik vind het sowieso not done dat je de input van de gebruiker zomaar gaat veranderen.
Zeker wanneer er uitzonderingen zijn; en je weet dat die er zijn (is al vermeld).

Je kan met javascript de aandacht trekken en ergens zetten: "bedoelde je ... ?".
Maar je geeft de gebruiker het laatste woord.


Daar heb je een punt, tot op zekere hoogte ................
Maar als ik altijd 1 op 1 de input van de gebruiker in onze database zou zetten ......... dan wil je niet weten welke rommel er in gezet wordt en dat wil je toch voorkomen ;-)

Het ging mij ook niet om de invoer van de gebruiker te wijzigen maar om in ieder geval het gedeelte wat bij ons in de db terechtkomt, zo goed mogelijk erin te zetten ;-). Klinkt bijna tegenstrijdig maar dat is het niet want er in een groot verschil wat de gebruiker ziet op het scherm en wat er bij ons binnenkomt.
 
Kris Peeters

Kris Peeters

01/02/2013 14:34:03
Quote Anchor link
Die rommel moet je weigeren. Je miet ze niet aanpassen.

Trouwens, dat kan gebruiksvriendelijk. Met javascript kan je de gebruiker dynamisch berichtjes sturen me de reden waarom ..., die komen dan bv. naast de <input> ...
Zoals je ziet met (login) registratie-formulieren, wanneer het wachtwoord of username niet voldoet aan de eisen.
Gewijzigd op 01/02/2013 14:37:51 door Kris Peeters
 
Arie Kant

Arie Kant

01/02/2013 14:37:45
Quote Anchor link
Weigeren is ook wel wer erg rigireus he .... ;-)

Btw, dit gedeelte van het formulier waar ik mee bezig ben is juist de PHP afhandeling voor het geval de gebruiker javascript uit hebt staan dus realtime een gebruikersvriendelijke oplossing maken valt dan even af maar ja, gelukkig hebben niet veel bezoekers javascript uit staan.
 
Tim S

Tim S

01/02/2013 14:56:59
Quote Anchor link
Je kan de gebruiker ook gewoon een melding sturen met de gewijzigde gegevens en vragen of ze hiermee akkoord gaan.

Toevoeging op 01/02/2013 14:57:05:

Je kan de gebruiker ook gewoon een melding sturen met de gewijzigde gegevens en vragen of ze hiermee akkoord gaan.
 
Arie Kant

Arie Kant

01/02/2013 15:04:14
Quote Anchor link
dat kan ook maar of het er dan gebruikersvriendelijker op wordt ...............

Dit blijft altijd een lastige discussie tot hoever wij als bouwers mogen bepalen hoe de klant de site ervaart en ondervind maar daarbij hebben wij de klantvriendelijkheid altijd hoog in het vaandel staan ;-)

Om nog als laatste een klein voorbeeld te geven, als men bij ons in een formulier bij voorletters b.v. "abc" invult, dan wordt dat automatisch wanneer men naar het volgende veld gaat gewijzigt naar "A.B.C.". En geloof me, men is erg makkelijk in wat er ingevuld moet worden in een formulier. Wij verwerken tienduizenden formuliieren per jaar en ik heb nog nooit een klacht ontvangen dat iemand het niet mee eens was dat zijn voorletters automatisch gewijzigd werden zonder het eerst te vragen van "abc" naar "A.B.C." ............ ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.