我想知道如何在Php中搜索空间
例如,我有$Studentname
,它的价值是John Green。我希望$Name
(值约翰)和$Surname
(值为绿色)。但我不知道如何在字符串中搜索空间。
提前致谢
答案 0 :(得分:4)
在没有限制的情况下使用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)
有些时候这仍然是不正确的,但是更多的姓氏有空格而不是名字。理想情况下,如果您正在捕获表单数据,请使用两个不同的字段作为名字和姓氏,但即使这并不总是理想的,一些文化有不同的方式来命名工作并不像名字姓氏那么简单。
Here is a list在使用名称
时常见的陷阱答案 1 :(得分:1)
您可以使用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
)。
答案 2 :(得分:1)
第一个建议: -
在使用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”等名称,会发生什么。这就是为什么第一点。
答案 3 :(得分:0)
从学生姓名中获取姓名和用户名,请点击此
$Studentname = 'John Green';
$name = explode(' ',$Studentname);
$firstname = $name[0]; //output john
$lastname = $name[1]; //output green