Afkorting

Status
Niet open voor verdere reacties.

shadowbikes

Gebruiker
Lid geworden
1 nov 2006
Berichten
466
Hoi,
In mijn genealogisch programma wil ik de volgende output krijgen van een voornaam.
Stel iemand heet Peter Christiaan Hendrikus.
Als output wil ik graag zien, P.C.H.

Iemand een idee .

Groet Rene
 
Ligt eraan,
Is de naam opgebouwd uit 3 aparte strings of is het maar 1 string.
Want als het 1 string is, dan moet je eerst de string laten exploden op de space
explode(' ',$naam)
vervolgens is er voor elke naam een aparte string.
Nu kun je met substr de eerst letter pakken van elke naam
ik geloof dat dat substr($naam, 0,1) is
vervolgens combineer je substr in een nieuwe string waar je een '.' tussen zet.
 
phobia,
Het is maar 1 string, jouw oplossing had ik ook al in gedachten, maar ik dacht dat 't nog wat makkelijker kon, helaas dus.
Bedankt.
René
 
of je moet met preg_match gaan werken.
Daarmee zou het ook moeten lukken, maar vraag me niet hoe je dat doet.
Je kunt daarmee wel elke eerste karakter vinden voor een space.
Dan zou je het misschien met een regel afkunnen.

Ik zelf zou voor de iets wat omslachtinge manier gaan en een de explodes door een foreach loop draaien
om de eerst letter te pakken met substr en aan de nieuwe string te plakken.
Dat zal je een regel of 4 gaan opleveren.
 
Avond!

Hier een voorbeeld. Even plakken in een tekstbestandje, opslaan als index.php en hij werkt.

PHP:
<?php
	if(isset($_POST['post'])){
		$naam = $_POST['naam'];
		$namen = explode(' ', $naam);
		$afk = "";
		
		foreach($namen as $letter){
			$afk .= ucfirst(substr($letter, 0,1));
			$afk .= ". ";
		}
		
		echo($afk);
	}
?>

<html>
	<head>
		<title>Afkorting</title>
	</head>
	<body>
		<form action="<?php echo($_SERVER['REQUEST_URI']); ?>" method="post">
			<input type="text" name="naam" value="" />
			<br />
			<input type="submit" name="post" value="Verzenden" />
		</form>
	</body>
</html>

Gr. Ronald!:)
 
Dit is het klein/kortst dat je het kunt maken.
En als je geluk hebt leest iemand deze post die een held is in
die je kan helpen met een preg_match oplossing.

PHP:
<?php
    if(isset($_POST['post'])){
        $namen = explode(' ', $_POST['naam']);
        $afk = "";
        foreach($namen as $letter){
            $afk .= ucfirst(substr($letter, 0,1)).". ";
        }
        
        echo($afk);
    }
?>
 
Er staan op internet wel pagina's met een uitgebreide uitleg over preg_match(). Precies welk teken waarvoor wordt gebruikt. Op die manier zul je zelf met een beetje puzzelen er wel uit kunnen komen! ;)

Wie weet kijk ik er vanavond nog even naar.

Maar dit werkt in ieder geval!

Gr. Ronald.:)
 
Heren,

Geweldig dit werkt perfect.
Nou eens kijken of ik dit in een functie kan zetten, is nog handiger.

groet René
 
dat is simpel
function ini($naam)
{
//script hier
return $string
}
en $_POST['naam'] vervangen voor $naam
en de echo weg halen en de string op de plaats van $sting zetten

de functie gebruik je dan zo

echo ini('Piet jan klaas');
 
Laatst bewerkt:
phobia,

Inderdaad was een makkie, was me al gelukt.

Ik sluit deze topic, nogmaals bedankt.

René
 
maar!
Wat als de gebruiker de namen met alleen een comma scheid van elkaar(Pieter,Klaas,Jan)!

Heb je daar ook aangedacht!
 
Ik wist hem nog een regel kleiner te maken!

PHP:
if(isset($_POST['post'])){
        $namen = explode(' ', $_POST['naam']);
        foreach($namen as $letter){
            $afk[]= ucfirst(substr($letter, 0,1)).". ";
        } 
        echo(implode('.',$afk));
    }
 
Ik wist hem nog een regel kleiner te maken!

PHP:
if(isset($_POST['post'])){
        $namen = explode(' ', $_POST['naam']);
        foreach($namen as $letter){
            $afk[]= ucfirst(substr($letter, 0,1)).". ";
        } 
        echo(implode('.',$afk));
    }

Ik heb nog even gezocht naar het preg_replace en dit zou moeten werken. Als laatste waarde kun je de naam invoeren! Het zal vast nog anders kunnen (om het nog veiliger of beter te maken), maar als mensen netjes met een spatie invullen en met hoofdletter werkt dit!

In 1 regel kan het! ;)

PHP:
<?php
         echo preg_replace("/([A-Za-z]{1})[A-Za-z]{1,} ([A-Za-z]{1})[A-Za-z]{1,} ([A-Za-z]{1})[A-Za-z]{1,}/", "$1. $2. $3.", "Peter Christiaan Hendrikus");
?>

Gr. Ronald!:)
 
In 1 regel kan het! ;)

Gr. Ronald!:)

Zoals ik al voorspeld had! Maar hij zal er wel van uit noeten gaat dat er domme gebruikers tussen zitten die niet netjes doen wat er gevraagd wordt.
hij zal moeten controleren op meerdere leestekens . , - en space
want geheid dat er een helder licht tussen zit die het verkeerd doet en zijn script loopt in de soep.
 
Zoals ik al voorspeld had! Maar hij zal er wel van uit noeten gaat dat er domme gebruikers tussen zitten die niet netjes doen wat er gevraagd wordt.
hij zal moeten controleren op meerdere leestekens . , - en space
want geheid dat er een helder licht tussen zit die het verkeerd doet en zijn script loopt in de soep.

Nog even aan het klungelen geweest! En dit moet een al wat slimmere domme tegenhouden. Check welke naam ik in heb gevoerd en wat er uit komt!

PHP:
<?php
         echo preg_replace("/([A-Za-z]{1})[A-Za-z]{1,}[^A-Za-z]{1,}([A-Za-z]{1})[A-Za-z]{1,}[^A-Za-z]{1,}([A-Za-z]{1})[A-Za-z]{1,}/", "$1. $2. $3.", "Peter,&^*()_00054++=$#@Christiaan, 645 4654648 48)_)+&*%$%^& Hendrikus");
?>

Gr. Ronald!:)
 
haha door klungelen zijn de grootste ontdekkingen gedaan!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan