【发布时间】:2012-04-21 23:36:12
【问题描述】:
我想知道如何从example@hotmail.com 中删除@hotmail.com?
谢谢
【问题讨论】:
-
我没有,我试图删除用空格替换@,然后删除字符串中第一个 wrod 之后的所有内容。但我猜还有更简单的方法?
-
@AJ 的目的是:当您首先表明您尝试自己解决问题时,您会得到更好的答案。仅供参考。 :)
标签: php
我想知道如何从example@hotmail.com 中删除@hotmail.com?
谢谢
【问题讨论】:
标签: php
function remove_domain($email) {
$v = explode("@", $email);
return $v[0];
}
【讨论】:
这将从任何电子邮件中删除任何域名:
// Sample email address for testing:
$email = "example@anything.tld";
// Now let's remove @anything.tld:
$email = preg_replace('/@.+/','',$email);
// And then echo results out to see what we got:
echo $email;
所以这里最重要的是这一行,重点关注它:
echo preg_replace('/@.+/', '', 'example@deleteme.com');
它使用正则表达式匹配删除以@ 开头的任何内容,后跟至少一个任意字符。之后它会打印出结果。因此,所有这些都可以通过单行来完成,并且平等地支持(丢弃)每个域。
之后,$email 仅包含 "example",而 @anything.tld 被删除。
这样$email 可以是"my.mail.box@hotmail.com"、"somebody@mail.ex-ample.com" 或任何你能想象到的。
您可以在此处阅读有关正则表达式的更多信息:function.preg-replace.php、此处:pcre.org 或此处:wikipedia/Regular_expression。
$domain = 'gmail.com';
$email = str_replace('@'.$domain, '', $email);
此处的 PHP 手册页:function.str-replace.php
【讨论】:
你可以使用str_replace,
$email = 'example@hotmail.com';
echo str_replace('@hotmail.com', '', $email); // example
【讨论】:
str_replace,他应该开动脑筋尝试解决它。
str_replace 删除任意域,另外两个如果你不了解自己,那么你自己问一个关于堆栈溢出的问题,而不是在我的答案。
$domain = 'gmail.com'; 然后$email = str_replace('@'.$domain, '', $email); ... 有那么难吗?
我不确定这是否是最好的方法,但您可以尝试以下方法:
$string = "email@hotmail.com";
$new_string = explode("@", $string);
print $new_string[0] // will print 'email'
希望对你有帮助!
【讨论】:
或者干脆用strstr(string $haystack ,mixed $needle [,bool $before_needle = false ]), 那么你不需要检查特定的域:
$email = 'blabla@hotmail.com';
echo strstr($email, '@', true);
【讨论】: