我从一个应该提供电子邮件地址的外部应用程序中获取一个字符串值。但是,此字符串值有时会提供与电子邮件地址一起显示的显示名称。我只需要在< bracket>内的电子邮件地址,所以我想我需要在我的SELECT
语句中做一些子字符串或INSERT
子句。
以下是我的INSERT
语句以及测试数据:
INSERT INTO tblInquiry
(fldInquiryFromEmail)
VALUES ('"\'Tim Lastname\'" <timm@testCCaddcompany.com>')
答案 0 :(得分:1)
我同意@ eggyal的评论。但如果必须,请按以下方式进行:
INSERT INTO tblInquiry (fldInquiryFromEmail)
VALUES (substring_index(substring_index('"\'Tim Lastname\'" <timm@testCCaddcompany.com>', '<', -1), '>', 1))
请注意,即使您传入真实的电子邮件(没有尖括号),这仍然有效
答案 1 :(得分:0)
您需要在实际插入数据库之前从字符串中提取电子邮件,因为它更容易。
如果您不确定以空格分隔的字符串的哪一部分是电子邮件地址,则可以按空格拆分字符串,并在每个子字符串上使用PHP函数filter_var()
。
//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;
}
答案 2 :(得分:0)