Замена выбранных символов в строке PHP

У меня есть переменная:

$var = '+44123456789';

И я хочу заменить 3 символа, то есть 3 символа с конца на X, так:

$var = '+44123XXX789';

Я знаю, что могу использовать:

$var = substr($var, 0, 6) . 'XXX' . substr($var, -3);

Но проблема в том, что $var может иметь разную длину.

Как мне настроить substr, чтобы это работало таким же образом, но с переменной любой длины? (P.S. $var всегда будет содержать не менее 8 символов.)


person Grant    schedule 25.11.2015    source источник
comment
Математика 101: используйте strlen (), чтобы получить длину, затем вычтите 6   -  person Mark Baker    schedule 25.11.2015
comment
Или даже $var = substr($var, 0, -6) . 'XXX' . substr($var, -3);   -  person Mark Baker    schedule 25.11.2015


Ответы (3)


Попробуй это

$var = '+44123123789';

echo substr($var, 0, strlen($var) - 6) . 'XXX' . substr($var, -3);//+44123XXX789

$var = '+44123123789111';

echo substr($var, 0, strlen($var) - 6) . 'XXX' . substr($var, -3);//+44123123XXX111

см. демонстрацию здесь

person Niranjan N Raju    schedule 25.11.2015
comment
Это было прекрасно и очень легко понять, спасибо! - person Grant; 27.11.2015

вычислить длину строки, а затем обработать подстроку, как указано ниже

 $var = '+44123456789';
$len=strlen($var);
if($len>10){
$len=$len-6;
$var = substr($var, 0, $len) . 'XXX' . substr($var, -3);}
elseif($len==10){
$var = substr($var, 0, 6) . 'XXX' . substr($var, -3);
}
echo $var;
person Vigneswaran S    schedule 25.11.2015

Вы можете получить доступ к символам в строке по индексу:

$var = '+44123456789';
$c = strlen($var)-6;
$var[$c++] = $var[$c++] = $var[$c++] = 'X';
echo $var;
person Steve    schedule 25.11.2015