情况就是这样,我有一个字符串变量包含一个带标题的全名。我只想得到名字,没有昏迷和标题。然后我用下划线 (_) 替换空格结果。
我试过的:
$name = 'John Doe, Ph.D'
$get_name = preg_split('/[\s,]+/', $name, 2);
$username = strtolower($get_name[0] . '_' . $get_name[1]);
dd($get_name, $username); //result : john_doe, ph.d
如何得到如下结果:john_doe
从变量$name
?
您可以使用preg_replace
先将第二个名称(如果存在)之后的所有内容替换到末尾,然后将空格替换为_
,并将小写输入传递给它。'Fred , M.Sc'
这允许您支持输入,例如'Fred John Doe , B.A'
:
$name = 'John Doe, Ph.D';
$get_name = preg_replace(array('/^([a-z]+(?:\s+[a-z]+)?).*$/', '/\s+/'), array('$1', '_'), strtolower($name));
echo $get_name;
echo "\n";
$name = 'Fred , M.Sc';
$get_name = preg_replace(array('/^([a-z]+(?:\s+[a-z]+)?).*$/', '/\s+/'), array('$1', '_'), strtolower($name));
echo $get_name;
echo "\n";
$name = 'Fred John Doe , B.A';
$get_name = preg_replace(array('/^([a-z]+(?:\s+[a-z]+)?).*$/', '/\s+/'), array('$1', '_'), strtolower($name));
echo $get_name;
echo "\n";
$name = 'John Doe';
$get_name = preg_replace(array('/^([a-z]+(?:\s+[a-z]+)?).*$/', '/\s+/'), array('$1', '_'), strtolower($name));
echo $get_name;
echo "\n";
$name = 'Fred';
$get_name = preg_replace(array('/^([a-z]+(?:\s+[a-z]+)?).*$/', '/\s+/'), array('$1', '_'), strtolower($name));
echo $get_name;
输出:
john_doe
fred
fred_john
john_doe
fred
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句