2010-12-12 6 views
7

que tiene una variable de PHP que se ve un poco como esto:Sustitución última x cantidad de números

$id = "01922312"; 

tengo que sustituir los dos o tres últimos números con otro personaje. ¿Cómo debo hacer esto?

¡Muchas gracias de antemano!

EDITAR Lo siento por la confusión, básicamente tengo la variable anterior, y después de que haya terminado el procesamiento que quiero que se vea algo como esto:

$new = "01922xxx"; 

Lo siento de nuevo!

EDIT2 D'oh! Typo con las comillas. ¡Lo siento!

+2

Refinar su pregunta. ¿Qué significa "reemplazar los últimos dos o tres números con otro personaje"? – dkamins

+0

Ese valor no es válido. Danos información útil. –

+0

"Reemplazar un número con un carácter" ...? – KingCrunch

Respuesta

22

Prueba esto:

$new = substr($id, 0, -3) . 'xxx'; 

Resultado:

01922xxx
2
function replaceCharsInNumber($num, $chars) { 
    return substr((string) $num, 0, -strlen($chars)) . $chars; 
} 

Uso:

$number = 5069695; 
echo replaceCharsInNumber($number, 'xxx'); //5069xxx 

verlo en acción aquí: http://codepad.org/XGyVQ1hk

+1

Tenga cuidado de convertir explícitamente en una cadena.Si el valor se ingresa como octal y también se espera que la salida sea octal, entonces esto no funcionará como se desee. –

+0

Oye, esa cosa de codepad.org es genial. Bookmarked :) – Jonah

11

Puede usar substr_replace para reemplazar una subcadena.

$id = substr_replace($id, 'xxx', -3); 

Referencia:

http://php.net/substr-replace

+1

+1 para substr_replace - parece una buena manera de hacerlo. –

2

Las cadenas pueden ser tratados como matrices, con los caracteres correspondientes a las teclas:

$id = 1922312; // PHP converts 01922312 => 1 because of that leading zero. Either make it a string or remove the zero. 
$id_str = strval($id); 

for ($i = 0; $i < count($id_str); $i++) 
{ 
    print($id_str[$i]); 
} 

Esta debe ser la salida de su número original. Ahora para hacer cosas con él, trátelo como una matriz normal:

$id_str[count($id_str) - 1] = 'x'; 
$id_str[count($id_str) - 2] = 'y'; 
$id_str[count($id_str) - 3] = 'z'; 

Espero que esto ayude!

+0

'strval (01922312)' es '1' (no es su culpa; está mal en la pregunta); podría querer soltar el '0' inicial para dejarlo en claro. – scoates

+0

Hmm, ¿qué pasa con '(cadena) $ id_str'? Voy a verificar ... – Blender

+0

No. ¡Supongo que no puedes evitarlo, ya que PHP lo convierte en '1' automágicamente! – Blender

1

Sólo convertir a cuerda y reemplazar ...

$stringId = $id . ''; 
$stringId = substr($id, 0, -2) . 'XX'; 
Cuestiones relacionadas