Как получить первое слово предложения в PHP? - PullRequest
132 голосов
/ 19 марта 2010

Я хочу извлечь первое слово переменной из строки. Например, возьмите этот ввод:

<?php $myvalue = 'Test me more'; ?>

Результирующий вывод должен быть Test, что является первым словом ввода. Как я могу это сделать?

Ответы [ 17 ]

260 голосов
/ 19 марта 2010

Существует строковая функция ( strtok ), которую можно использовать для разбиения строки на более мелкие строки ( токены ) на основе некоторых разделителей. Для целей этой цепочки первое слово (определенное как что-либо перед первым пробелом) из Test me more может быть получено путем токенизации строки на пробел.

<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>

Для получения дополнительной информации и примеров см. Справочную страницу PHP strtok .

218 голосов
/ 19 марта 2010

Вы можете использовать функцию Разнесение следующим образом:

$myvalue = 'Test me more';
$arr = explode(' ',trim($myvalue));
echo $arr[0]; // will print Test
35 голосов
/ 19 марта 2010

Если у вас PHP 5.3

$myvalue = 'Test me more';
echo strstr($myvalue, ' ', true);

обратите внимание, что если $myvalue является строкой с одним словом, strstr ничего не возвращает в этом случае. Решением может быть добавление пробела к тестовой строке:

echo strstr( $myvalue . ' ', ' ', true );

Это всегда будет возвращать первое слово строки, даже если строка содержит только одно слово

Альтернатива что-то вроде:

$i = strpos($myvalue, ' ');
echo $i !== false ? $myvalue : substr( $myvalue, 0, $i );

Или используя explode, в котором так много ответов, и я не стану указывать, как это сделать.

21 голосов
/ 19 марта 2010

Вы могли бы сделать

echo current(explode(' ',$myvalue));
11 голосов
/ 21 августа 2014

Хотя уже немного поздно, но у PHP есть лучшее решение для этого:

$words=str_word_count($myvalue, 1);
echo $words[0];
5 голосов
/ 26 июля 2017

Аналогично принятому ответу с одним меньшим шагом:

$my_value = 'Test me more';
$first_word = explode(' ',trim($my_value))[0];

//$first_word == 'Test'
5 голосов
/ 17 сентября 2012

На всякий случай, если вы не уверены, что строка начинается со слова ...

$input = ' Test me more ';
echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test
4 голосов
/ 20 марта 2010

Используя функцию разделения, вы также можете получить первое слово из строки.

<?php
$myvalue ="Test me more";
$result=split(" ",$myvalue);
echo $result[0];
?>
4 голосов
/ 19 марта 2010
<?php
  $value = "Hello world";
  $tokens = explode(" ", $value);
  echo $tokens[0];
?>

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

3 голосов
/ 21 января 2011

strtok быстрее, чем extract или preg_* функций.

...