从php中的字符串中删除@email.com

从php中的字符串中删除@email.com,php,Php,我只想得到电子邮件地址的左半部分(用户名部分username@email.com),所以去掉@及其后面的所有字符。如果您有PHP5.3,您可以使用 如果没有,只需使用可靠的substr $username = substr($email, 0, strpos($email, '@')); 可以使用explode()拆分字符串 由于还没有人使用过preg_match: <?php $email = 'user@email.com'; preg_match('/(\S+)(@

我只想得到电子邮件地址的左半部分(
用户名
部分
username@email.com
),所以去掉@及其后面的所有字符。

如果您有PHP5.3,您可以使用

如果没有,只需使用可靠的
substr

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

可以使用explode()拆分字符串


由于还没有人使用过
preg_match

<?php
    $email = 'user@email.com';
    preg_match('/(\S+)(@(\S+))/', $email, $match);

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

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


使用数组意味着,如果您以后决定使用
email.com
部分,您已经将其分离出来,并且不必大幅更改您的方法。:)

@chriso:为什么这里不需要它。字符串函数更快;)为什么不必使用数组?+1查看手册页面,以strstr为例,完全相同的问题已经解决了。我怀疑他是否已经知道
@email.com
部分,而不知道
用户名
部分。在这种情况下,EXPLODE是最好的选择,尽管可以通过循环所有列表来完成,和子串它!!!虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
$email = 'hello@email.com';
/*split the string bases on the @ position*/
$parts = explode('@', $email);
$namePart = $parts[0];
$parts=explode('@','username@email.com');

echo $parts[0];// username
echo $parts[1];// email.com
$text = 'abc@email.com';
$text = str_replace('@email.com','',$text);
<?php
    $email = 'user@email.com';
    preg_match('/(\S+)(@(\S+))/', $email, $match);

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

    echo $match[1];  // output: `user`
?>
function subStrEmail($Useremail)
{
    $emailSub=substr($Useremail,4);
    $email = explode('.', $emailSub);

    if($email[0]=='www'){
        $email=substr($emailSub,4);
        $email=ltrim($email,'www.');
        return $email;
    }
    return $emailSub;
}