我想知道如何在Php中搜索空间例如,我有$Studentname
,它的值是约翰格林。我想拥有$Name
(值为约翰)和$Surname
(值为绿色)。但是我不知道如何在字符串中搜索空格.提前致谢
使用没有限制的explode()
将导致不正确的结果。一些名字和姓氏有空格。例如:
$name = explode(" ","Jan Van Riebeck");
echo $name[0]." ".$name[1]; // Jan Van (incorrect)
$name = explode(" ","St. John Westcox");
echo $name[0]." ".$name[1]; // St. John (incorrect)
使用有限制的explode()
(因此它只返回 2 个项目),如下所示:
$name = explode(" ","Jan Van Riebeck",2);
echo $name[0]." ".$name[1]; // Jan Van Riebeck (correct)
这在一段时间内仍然是不正确的,但更多的姓氏比名字有空格。理想情况下,如果您要捕获表单数据,请为名字和姓氏使用两个不同的字段,但即使这并不总是理想的,某些区域性也有不同的方式来使用名称,这些方式并不像名字姓氏那么简单。
以下是使用名称时的常见陷阱列表
第一个建议:-
-
当您使用 html 表单时,尝试在两个不同的字段中输入名字和姓氏。
-
如果上述方法无法实现,请使用以下代码:-
<?php $Studentname = 'John Green'; $student_full_name = explode(' ',trim($Studentname));//trim to remove space from starting and ending and explode to break string when space found $first_name = $student_full_name[0];//output John $sur_name = $student_full_name[1];//output Green ?>
注意:- 如果用户输入"John Green smith"或"John(多个空格)Green"之类的名称会发生什么。这就是为什么做第一点。
您可以使用 explode()
函数通过使用空格作为分隔符将字符串拆分为数组:
$names = explode(" ", "John Smith");
但是,您可能希望考虑到人们做一些愚蠢的事情,例如在名字和姓氏之间放置双空格,或者使用前后空格。
您可以使用trim()
来删除尾随和前面的空格:
$fullName = " John Smith ";
$trimmedName = trim($fullName); // Assigns "John Smith"
您还可以使用 preg_replace()
来删除名字和姓氏之间的多个空格:
$fullName = "John Smith";
$cleanedName = preg_replace("/'s+/", " ", $fullName); // Assigns "John Smith"
上面的代码将用单个空格替换一个或多个(+
)连续的空格('s
)。
要从学生姓名中获取姓名和用户名,请遵循此
$Studentname = 'John Green';
$name = explode(' ',$Studentname);
$firstname = $name[0]; //output john
$lastname = $name[1]; //output green