我对正则表达式很新,无法弄清楚它是如何工作的。我试过这个:
function change_email($email){
return preg_match('/^[\w]$/', $email);
}
但是这只返回一个布尔值true或false,我希望它返回@之前的所有内容。 这可能吗?我甚至不认为我在这里使用正确的PHP函数..
答案 0 :(得分:6)
使用explode
尝试更简单的方法:
explode('@', $email)[0];
答案 1 :(得分:3)
使用strpos
获取@
字符和substr
的位置以裁剪电子邮件:
function change_email($email){
return substr($email, 0, strpos($email, '@'));
}
示例:强>
<?php
function change_email($email){
return substr($email, 0, strpos($email, '@'));
}
var_dump( change_email( 'foo@bar.com' )); // string(3) "foo"
var_dump( change_email( 'example.here@domain.net' )); // string(12) "example.here"
var_dump( change_email( 'not.an.email' )); // string(0) ""
答案 2 :(得分:2)
您想要使用的是strstr()函数,您可以阅读here
$email = "name@email.com"
$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
答案 3 :(得分:2)
正则表达式
.*(?=@)
$re = "/.*(?=@)/";
$str = "example@something.com";
preg_match($re, $str, $matches);
答案 4 :(得分:2)
preg_match中有第3个参数,用于保存匹配的项目。
例如:
preg_match( '/(?P<email_name>[a-zA-Z0-9._]+)@(?P<email_type>\w+)\.\w{2,4}/', $email, $matches );
If $email = 'hello@gmail.com'
$matches['email_name'] will be equal to "hello"
$mathces['email_type'] will be equal to "gmail"
请注意,电子邮件名称可能只包含字母,数字,下划线和点。如果你想添加一些额外的字符,请在字符类中添加它们 - &gt; [a-zA-Z0-9._其他字符]
答案 5 :(得分:0)
通过正则表达式,
<?php
$mystring = "foo@bar.com";
$regex = '~^([^@]*)~';
if (preg_match($regex, $mystring, $m)) {
$yourmatch = $m[1];
echo $yourmatch;
}
?> //=> foo