我有一个带有单个字段EmailId的表注册。用户输入的电子邮件id如下sourab@winworldsoft.com在注册时。我想得到介于@和之间的值。(dot)并存储到数据库表公司中。
我尝试了一些基本的查询通配符查询。像运营商
表的SQl查询。
Create table registration(email varchar(20));
insert into registration values("sourabh@winworldsoft.com");
有人能帮我吗?我将不胜感激。
感谢
<?php
$emailadd="billy@somedomain.com";
$email_company = substr(strrchr($emailadd, "@"), 1);
echo $email_company;
?>
使用php,
你可以得到介于@和点之间的值,
$email = "sourab@winworldsoft.com"
$value1 = explode('@',$email);
$value2 = explode('.',$value1[1]);
echo $value2;
您可以创建一个AFTER INSERT TRIGGERON注册表,以自动插入公司表,如下所示:
DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `AIR_registration`$$
CREATE
/*!50017 DEFINER = 'root'@'%' */
TRIGGER `AIR_registration` AFTER INSERT ON `registration`
FOR EACH ROW BEGIN
END;
INSERT INTO Company (companyName)
VALUES (SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.email, '@', -1), '.', 1));
$$
DELIMITER ;
我认为获得"公司"的更好方法是使用regexp。
<?php
$re = '/.+@([^.]+).+/';
$email = 'sourab@winworldsoft.com';
preg_match($re, $email, $matches);
echo $matches[1];
?>
如果电子邮件的域部分有多个点,并且您想要除最后一部分之外的所有点,您也可以使用:
<?php
$re = '/.+@(.+)'..+/';
$email = 'sourab@email.winworldsoft.com';
preg_match($re, $email, $matches);
echo $matches[1];
?>
你会得到@和dot(.)之间的结果,就像这个
<?php
$email = "test@test.com";
$value1 = explode('@',$email);
$value2 = explode('.',$value1[1]);
echo $value2[0];
?>
或者以动态方式使用RE,你会得到这样的结果:
<?php
$re = '/.+@([^.]+).+/';
$email = 'test@test.com';
preg_match($re, $email, $match);
echo $match[1];
?>
尝试。。。
SELECT SUBSTRING('sourabh@winworldsoft.com', (CHARINDEX('@', 'sourabh@winworldsoft.com')+1), (len('sourabh@winworldsoft.com')+1-(CHARINDEX('.',reverse('sourabh@winworldsoft.com'))))-(CHARINDEX('@', 'sourabh@winworldsoft.com')+1));