如何在php字符串中搜索空间


How to Search for Space in Php String?

我想知道如何在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)

这在一段时间内仍然是不正确的,但更多的姓氏比名字有空格。理想情况下,如果您要捕获表单数据,请为名字和姓氏使用两个不同的字段,但即使这并不总是理想的,某些区域性也有不同的方式来使用名称,这些方式并不像名字姓氏那么简单。

以下是使用名称时的常见陷阱列表

第一个建议:-

  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(多个空格)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