Php can';不要让ucfirst()处理变量

Php can';不要让ucfirst()处理变量,php,Php,我已经做了一个代码,从电子邮件中获取名字和姓氏,$firstname是大写的,但$lastname不是。为什么? <html> <body> <?php $email = "test.testt@testing.com"; $firstname = ucfirst(strtok(strtok($email, "@"), ".")); $lastname = substr(strtok(strtok($em

我已经做了一个代码,从电子邮件中获取名字和姓氏,$firstname是大写的,但$lastname不是。为什么?

<html>
<body>

<?php
$email = "test.testt@testing.com";
$firstname = ucfirst(strtok(strtok($email, "@"), "."));
$lastname = substr(strtok(strtok($email, "@"), ".") . ' ' . strtok("."), strrpos(strtok(strtok($email, "@"), ".") . ' ' . strtok("."), ' '));
$lastname = ucfirst($lastname);
        
echo $firstname.$lastname;
?> 
 
</body>
</html>

输出:测试testt


任何帮助都将不胜感激

空间确实是问题所在,我使用
$lastname=ucfirst(str_replace(“”,$lastname))修复了它

除了实际的问题是空间之外,您的代码还要执行大量搜索和切碎字符串的操作

您可以通过先使用
@
然后使用
来简化它。然后在最后一次操作的每个部分上使用
ucfirst

$names = explode("@", $email);
// Get first 2 parts of name and split it by the .
[$firstname, $lastname] = explode(".", $names[0], 2);
$firstname = ucfirst($firstname);
$lastname = ucfirst($lastname);
echo $firstname . ' ' . $lastname;
$lastname
以space开头,可能trim()函数将代替auf str_replace,如
$lastname=ucfirst(trim($lastname))