2014-09-09 2 views
-4

Я не вижу скрипта PHP, чтобы средняя часть из одной строки подвергалась цензуре.PHP - Цензура в середине строки

Например: [email protected], превратится в: Develo ********* le.com.

Что было бы чистым и эффективным способом для этого?

Мой код на данный момент:

    $target = "[email protected]"; 
        $count = strlen($target) - 7; 
        $asterix = ''; 

        for ($a = 0; $a <= $count; $a++) { 
         $asterix .= '*'; 
        } 

        $output = substr($target, 0, 4) . $asterix . substr($target, -3); 

        echo $output; 

EDIT

Все вы жестко программировать astrixes (**) в этом ... я хочу, чтобы быть точным ,

Решено bij Sadiq. Ты настоящий человек MVP.

+0

Что вы пробовали? Покажите нам свою попытку решения, и мы можем предложить обратную связь. – meagar

+2

_ «Чистый и эффективный» _ приходит после того, как вы сами что-то пробовали ... иначе это типичный вопрос типа «кто-нибудь, пожалуйста, напишите мой код». – CBroe

+1

Есть много способов сделать это. Один из них - использовать ['substr_replace()'] (http://php.net/manual/en/function.substr-replace.php). – Sadiq

ответ

2

Вы можете сделать что-то вроде этого

$target = "[email protected]"; 
$count = strlen($target) - 7; 
$output = substr_replace($target, str_repeat('*', $count), 4, $count); 
echo $output; 

Он использует substr_replace() и str_repeat().

+0

thankyou, я не знал о str_repeat, собираюсь посмотреть его прямо сейчас! по крайней мере, кто-то, кто полезен – user3570796

0

Используйте функцию substr PHP.

http://php.net/manual/en/function.substr.php

$emailAddr = "[email protected]"; 
$emailAddrHidden = substr($emailAddr, 0, 6) . "*******" . substr($emailAddr, -6, 6); 

echo $emailAddrHidden; 
+0

Спасибо за ваш ответ, но я уже понял, что один, моя проблема в том, что я хочу, чтобы «*********» было точной суммой покрытых. Если у кого-то есть действительно короткий адрес электронной почты, у него будет только несколько астерикс и кто-то с длинным адресом электронной почты, который будет содержать много звездочек (*) – user3570796

0

Этот код будет работать, когда длина изменения адреса электронной почты:

$email = '[email protected]'; 
$length = strlen($email); //Find the string length 
$astr=''; 
for ($i=1;$i<=$length-12;$i++){$astr .= '*';} 
echo substr($email, 0, 6) . $astr . substr($email, -6 , 6); 
+0

. Это должно добавить правильное количество звездочек – Tim

+0

Крайний край, но это не удается для действительно коротких адресов электронной почты. –

+0

спасибо, но это похоже на то, что у меня было .... lol = P – user3570796

Смежные вопросы