2017-09-03 1 views
0

Je veux afficher seulement les trois premiers et les trois derniers caractères d'un nom. D'autres personnages devraient être cachés par X.
Par exemple,Comment cacher les caractères d'un nom par X?

$name = "ELVIS MASTAINE KANGABAM"; 

Je veux faire écho au nom ci-dessus comme ce qui suit:

$hidden_name = "ELVXX XXXXXXXX XXXXXBAM"; 

echo $hidden_name; 

S'il vous plaît aider! Je vous remercie!

+0

Que devrait-il se passer si le nom est Jon Doe? – localheinz

Répondre

0

J'utilise preg_replace sur tous les caractères de aZ substr 3 -> -3 et les remplacer par X.

$name = "ELVIS MASTAINE KANGABAM"; 
$hidden_name = substr($name, 0,3) . preg_replace("/([a-zA-Z])/", "x", substr($name,3,-3)) . substr($name, -3); 
echo $hidden_name; 

https://3v4l.org/CEK9B

+0

A travaillé! Merci! –

+0

Ne fonctionne pas avec les trémas, lorsque le nom contient des tirets, des accents, etc. – localheinz

+0

@localheinz voyez-vous le message ci-dessus de OP? Si OP dit que cela fonctionne pour ses besoins, sérieusement? Aussi sa question n'incluait pas ce qui devrait être fait avec des tirets, mais il ne les masque pas et c'est à mon avis correct puisque cela rend les noms lisibles. – Andreas

1

Vous pouvez utiliser substr et concaténation par exemple:

$hidden_name = substr($name ,0, 3). str_repeat("x", strlen($name)-6) . substr($name , -3); 
echo $hidden_name; 
+0

Ne correspond pas OP résultat attendu – Andreas

+0

je pense que cela devrait retourner ELVXX XXXXXXXX XXXXXBAM – scaisEdge

+0

réponse mise à jour pour 3 début et 3 fin char – scaisEdge