我有字符串,不幸的是电话号码和电子邮件连接起来像这样:
$phone_email = "617.651.3123mya123@some-site.com";
我希望能够在最后一个号码和第一个字母之间分开。
所需的输出
$phone = "617.651.3123";
$email = "mya123@some-site.com";
我正在使用php,但希望这种策略在任何语言中都是直截了当的。
修改
我尝试了很多东西,包括尝试通过删除数字来简单地抓取电子邮件。 $email = preg_replace('#^\d+#', '', $phone_email);
这导致仅删除忽略617
.
答案 0 :(得分:1)
简单的解决方案是:
$phone_email = "617.651.3123mya123@some-site.com";
$ms = array();
preg_match("/(.*\d)([a-z].*)/", $phone_email, $ms);
print_r($ms);
当然,不考虑电子邮件以号码开头的情况。
答案 1 :(得分:1)
正如其他人所指出的那样,在最后一个数字和第一个字母之间分开"可能不是一个好策略,因为电子邮件地址可以从数字开始。也就是说,我相信这大致符合您的要求:
$phone_email = "617.651.3123mya123@some-site.com";
$matches = [];
preg_match("/([^a-zA-Z]*)(.*)/", $phone_email, $matches);
$phone = $matches[1];
$email = $matches[2];
echo "Phone: $phone\n";
echo "Email: $email\n";
// Output:
// Phone: 617.651.3123
// Email: mya123@some-site.com
答案 2 :(得分:1)