2011-04-01 11 views

Respuesta

11

Si tiene PHP5.3 podría utilizar strstr

$email = '[email protected]'; 

$username = strstr($email, '@', true); //"username" 

Si no es así, sólo tiene que utilizar la confianza substr

$username = substr($email, 0, strpos($email, '@')); 
+0

+1 Mirando la página del manual a strstr, la misma pregunta se resuelve como un ejemplo. – Paul

2

se puede dividir la cadena usando explotar()

$email = '[email protected]'; 
/*split the string bases on the @ position*/ 
$parts = explode('@', $email); 
$namePart = $parts[0]; 
1
$parts=explode('@','[email protected]'); 

echo $parts[0];// username 
echo $parts[1];// email.com 
+0

uso innecesario de matrices – chriso

+1

@chriso: Por qué no es necesario aquí. –

+0

las funciones de cadena son más rápidas;) ¿por qué usar matrices cuando no es necesario? – chriso

-1
$text = '[email protected]'; 
$text = str_replace('@email.com','',$text); 
+1

Dudo que él ** ya ** sepa la parte '@ email.com' y ** no ** sepa la parte' username'. – drudge

+0

en ese caso EXPLODE es la mejor opción, aunque se puede hacer con recorriendo toda la lista, y sub-stringing !!! – Sourav

0

Dado que nadie ha utilizado aún preg_match:

<?php 
    $email = '[email protected]'; 
    preg_match('/(\S+)(@(\S+))/', $email, $match); 

/* print_r($match); 
     Array 
     (
      [0] => [email protected] 
      [1] => user 
      [2] => @email.com 
      [3] => email.com 
     ) 
*/ 

    echo $match[1]; // output: `user` 
?> 

Usando un conjunto significa que si más adelante decide que desea que la parte email.com, que ya lo tienes separa y no tiene que cambiar drásticamente su método . :)

Cuestiones relacionadas