0

我从应该提供电子邮件地址的外部应用程序返回字符串值。但是,此字符串值有时会提供与电子邮件地址一起出现的显示名称。我只需要电子邮件地址,它位于 <brackets> 内,所以我认为我需要在我的语句中添加某种子字符串或SELECT子句INSERT

这是我的INSERT陈述以及测试数据的样子:

INSERT INTO tblInquiry
(fldInquiryFromEmail)
VALUES ('"\'Tim Lastname\'" <timm@testCCaddcompany.com>')
4

3 回答 3

1

我同意@eggyal 的评论。但如果你必须这样做,方法如下:

INSERT INTO tblInquiry (fldInquiryFromEmail)
VALUES (substring_index(substring_index('"\'Tim Lastname\'" <timm@testCCaddcompany.com>', '<', -1), '>', 1))

请注意,即使您传入真实的电子邮件(不带尖括号),这仍然有效

于 2012-05-17T13:31:50.817 回答
0

您需要在实际插入数据库之前从字符串中提取电子邮件,因为它更容易。如果您不确定以空格分隔的字符串的哪一部分是电子邮件地址,您可以用空格分割字符串并filter_var()在每个子字符串上使用 PHP 函数。

    //first, sanitize user input
    $str = filter_var($_POST['some_input'], FILTER_SANITIZE_STRING);

    //second, convert the string into array
    $str = explode(' ',$str);

    //third, check for valid email inside the array
    foreach ($str as $key=>$value) {         
      if (filter_var($value, FILTER_VALIDATE_EMAIL))
      echo $value;
    }
于 2012-05-17T13:24:05.663 回答
0

据我了解你的问题,你想提取之间的电子邮件地址,<>这样你就可以使用 mysql 函数

SELECT SUBSTRING('<test@gmail.com>',2,LENGTH('<test@gmail.com>')-1)
//return test@gmail.com

参考:

SUBSTRING

LENGTH

于 2012-05-17T13:28:18.737 回答