Как удалить все после пробела в 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,' ');

попробуй такое

<?php
$x = "Laura Smith";
echo strtok($x, " "); // Laura
?>

функции strtok


нет необходимости использовать регулярное выражение, просто используйте метод explode.

$item = explode(" ", $x);
echo $item[0]; //Laura

метод, предоставленный TheBlackBenzKid, действителен для вопроса-однако при представлении аргумента, который не содержит пробелов, он вернет пустую строку.

хотя regexes будут более вычислительно дорогими, они обеспечивают намного больше гибкости, например:

function get_first_word($str)
{
 return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str);
}

вы можете сделать также, как это

$str = preg_split ('/\s/',$x);
print $str[0];

этот ответ удалит все после первого пробела, а не последнего, как в случае принятого ответа.Используя strpos и substr

$str = "CP hello jldjslf0";
$str = substr($str, 0, strpos( $str, ' '));
echo $str;

$x= " Laura Smith"; $temparray = implode (' ' , $x); echo $temparray[0];

извините, иногда перепутать взрываются и взрываются...