Я хотел бы знать, как искать пространство в Php
Например, у меня есть $Studentname
и это ценность Джон Грин. я хочу иметь $Name
(со значением Джон) И $Surname
(Со значением Green). Но я не знаю, как искать пространство в строке.
заранее спасибо
Первое предложение: —
Попробуйте использовать имя и фамилию в двух разных полях, когда вы используете форму 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
?>
Примечание. — Что произойдет, если пользователь введет имя типа «Джон Грин Смит» или «Джон (более одного пробела) Грин». Вот почему первый пункт.
С помощью 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)
Это все еще будет неверно некоторое время, но больше фамилий имеют пробелы, чем имена. В идеале, если вы собираете данные формы, используйте два разных поля для имени и фамилии, но даже это не всегда идеально, в некоторых культурах существуют разные способы работы с именами, которые не так просты, как фамилия и имя.
Вот список распространенных ошибок при работе с именами
Вы можете использовать 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