PHP:获取第一个单词的第一个字符和第二个单词的三个字符

时间:2017-03-09 17:47:51

标签: php

我正在尝试根据个人的名字和姓氏创建唯一的电子邮件地址。

例如,我想创建一个像

这样的电子邮件地址 来自Thomas Smith的

t.smi@domain.com

w.bil@domain.com为William Billed

所以基本上第一个名字应该返回1个字符,我想从姓氏中取三个字符。

我试图找到一个解决方案,但似乎人们尝试类似的东西,但不完全是我想要的。

我设法得到像

这样的东西

$thename = "Peter Bonds"; $pos = stripos($thename, ' '); $themail = substr($thename, 0, $pos + 3);

努力获得第一个名字和两个姓氏,但却很难找到针对我的具体问题的解决方案。

如果有人可以帮助解决这个问题,我将非常感激。

2 个答案:

答案 0 :(得分:1)

使用explodestrtolowersubstr函数的解决方案:

$thename = "Peter Bonds";
$domain = "@domain.com";

$name_parts = explode(" ", $thename);
$theemail = strtolower($name_parts[0][0]. "." .substr($name_parts[1], 0, 3)). $domain;

print_r($theemail);

输出:

p.bon@domain.com

另一个替代方案可能是使用preg_replace函数的单行解决方案:

$theemail = strtolower(preg_replace("/^(\w)\w+\s+(\w{3})\w*$/", "$1.$2". $domain, $thename));

print_r($theemail);   // p.bon@domain.com

答案 1 :(得分:1)

您只是使用了错误的功能。试试这个

<?php
  $thename = "Peter Bonds";
  $pos = stripos($thename, ' ');
  $themail = strtolower(substr($thename, 0, 1).'.'.substr($thename, $pos+1, 3).'@domain.com');
  echo $themail;
?>