【问题标题】:How to Search for Space in Php String?如何在 PHP 字符串中搜索空格?
【发布时间】:2016-04-30 16:40:09
【问题描述】:

我想知道如何在 PHP 中搜索空间 例如,我有 $Studentname,它的值是 John Green。我想要 $Name (with value John) 和 $Surname(With value Green) 。但我不知道如何在字符串中搜索空间。 在此先感谢

【问题讨论】:

  • 使用explode进行分离,而不是使用implode来增加空间
  • $data = explode(' ',$Studentname);$name = $data[0];$Surname =$data[1];
  • 如果全名分成两部分表示一个空格
  • 如果可能的话,最好让用户在不同的字段中输入这些,并不是所有的名字和姓氏都是单个单词(有些有空格),例如:St. John、Van Rensberg、Di Estos等

标签: php html whitespace spaces


【解决方案1】:

无限制地使用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 处理名称时的常见陷阱

【讨论】:

  • 已经为我检查了你的最佳答案,并给你奖励。干杯
【解决方案2】:

第一个建议:-

  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”之类的名称会发生​​什么情况。这就是为什么要做第一点。

【讨论】:

  • 你能看一下我的建议吗,我把它写成笔记,并告诉他一个最好的解决方案
【解决方案3】:

您可以使用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) 替换为一个空格。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 为什么两次爆炸?你能告诉我吗?
    • @A-2-A 现在快乐吗?也许你是反对票的人,如果你现在是时候改变你的投票了
    • @devpro 你能猜到为什么人们放弃投票吗?我不明白这到底是什么。 A-2-A 谢谢老兄。
    • 好吧,我的兄弟首先不要责怪@a-2-a,他说他不是反对票
    • 第二,我也不是一个反对者,我更正了你的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多