Как удалить все после пробела в PHP?
у меня есть база данных с именами, и я хочу использовать PHP replace после пробела на именах, пример данных:
$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
Я хочу, чтобы он вернулся
Laura
John.
John
8 ответов
сделайте это, это заменяет что-либо после символа пробела. Может использоваться и для тире:
$str=substr($str, 0, strrpos($str, ' '));
просто чтобы добавить его в микс, я недавно узнал эту технику:
list($s) = explode(' ',$s);
Я просто сделал быстрый тест, хотя, потому что я не сталкивался с методом strtok раньше, и strtok на 25% быстрее, чем мое решение list/explode, на приведенных строках примера.
кроме того, чем длиннее/более разделена начальная строка, тем больше становится разрыв в производительности. Дайте блок из 5000 слов, и explode сделает массив из 5000 элементов. strtok просто возьмет первый "элемент" и оставьте остальное в памяти в виде строки.
Так что strtok выигрывает для меня.
$s = strtok($s,' ');
нет необходимости использовать регулярное выражение, просто используйте метод explode.
$item = explode(" ", $x);
echo $item[0]; //Laura
метод, предоставленный TheBlackBenzKid, действителен для вопроса-однако при представлении аргумента, который не содержит пробелов, он вернет пустую строку.
хотя regexes будут более вычислительно дорогими, они обеспечивают намного больше гибкости, например:
function get_first_word($str)
{
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str);
}
этот ответ удалит все после первого пробела, а не последнего, как в случае принятого ответа.Используя strpos
и substr
$str = "CP hello jldjslf0";
$str = substr($str, 0, strpos( $str, ' '));
echo $str;
$x= " Laura Smith";
$temparray = implode (' ' , $x);
echo $temparray[0];
извините, иногда перепутать взрываются и взрываются...