How can I echo $name
so that only the first 5 characters are shown as alphabets and the rest are shown as *-marks.
For example echo $name
prints 'Test ***'
not 'Test Guy'
?
Asked
Active
Viewed 491 times
0
-
I think yuou should use: http://nl3.php.net/manual/en/function.substr.php – SuperDJ Oct 11 '14 at 08:54
2 Answers
2
I would prefer str_pad()
over regex functions in this case:
$pattern = 'Test Guy';
echo str_pad(substr($pattern,0,4), strlen($pattern), '*');
Easier, since padding is what you want to do, and offering better performance, since no slow regexes have to be compiled and applied...

arkascha
- 41,620
- 7
- 58
- 90
0
In your case (looks like you want to replace all characters except 'space' with '*') you can use this.
$str = "Test Guy";
echo substr($str, 0, 4) . preg_replace('/[^\s]/', '*', substr($str, 4));
output: Test ***
It's a little bit universal and you can use it with another strings like:
$str = "This is random string";
echo substr($str, 0, 4) . preg_replace('/[^\s]/', '*', substr($str, 4));
output: This ** ****** ******
I guess next that you have to do it wrap this code to the function like so:
function get_strange_string($str, $clear = 4) {
return substr($str, 0, $clear)
. preg_replace('/[^\s]/', '*', substr($str, $clear));
}

KryDos
- 447
- 4
- 14