如何在 Php 字符串中搜索 Space?

How to Search for Space in Php String?

我想知道如何在 Php 中搜索 Space 例如,我有 $Studentname,它的值为 John Green。我想要 $Name (价值 John) 和 $Surname(价值 Green) 。但我不知道如何在 string 中搜索 space 。 提前致谢

要从学生姓名中获取姓名和用户名,请遵循此

$Studentname = 'John Green';
$name = explode(' ',$Studentname);
$firstname = $name[0]; //output john
$lastname = $name[1]; //output green

您可以使用explode()函数将字符串分割成一个数组,使用space作为分隔符:

$names = explode(" ", "John Smith");

但是,您可能想要考虑到人们做一些愚蠢的事情,例如在名字和姓氏之间放置双 space,或者在 space 之前或之后。

您可以使用 trim() 删除尾随和前面的 spaces:

$fullName = " John Smith ";
$trimmedName = trim($fullName); // Assigns "John Smith"

您还可以使用 preg_replace() 去掉名字和姓氏之间的多个 space:

$fullName = "John     Smith";
$cleanedName = preg_replace("/\s+/", " ", $fullName); // Assigns "John Smith"

以上代码将用单个 space.

替换一个或多个 (+) 连续 spaces (\s)

第一个建议:-

  1. 当您使用 html 表单时,尝试在两个不同的字段中使用名字和姓氏。

  2. 如果以上不可能,请使用以下代码:-

    <?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(more than one space)Green" 这样的名称会发生​​什么情况。这就是为什么要做第一点。

不加限制地使用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()(所以它只有returns 2 项),像这样:

$name = explode(" ","Jan Van Riebeck",2);
echo $name[0]." ".$name[1]; // Jan Van Riebeck (correct)

有时这仍然是不正确的,但更多的姓氏有空格而不是名字。理想情况下,如果您正在捕获表单数据,请为名字和姓氏使用两个不同的字段,但即使这并不总是理想的,一些文化有不同的名字工作方式,不像名字姓氏那么简单。

Here is a list 使用名称时的常见陷阱