Как получить первое слово предложения в PHP?

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

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

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

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

     $myvalue = 'Test me more'; $arr = explode(' ',trim($myvalue)); echo $arr[0]; // will print Test 

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

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

    Дополнительные сведения и примеры см. На странице руководства PHP strtok .

    Если у вас есть 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 ); 

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

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

     echo current(explode(' ',$myvalue)); 

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

     $words=str_word_count($myvalue, 1); echo $words[0]; 

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

     $input = ' Test me more '; echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test 
     <?php $value = "Hello world"; $tokens = explode(" ", $value); echo $tokens[0]; ?> 

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

    С помощью функции split вы также можете получить первое слово из строки.

     <?php $myvalue ="Test me more"; $result=split(" ",$myvalue); echo $result[0]; ?> 

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

     public function getStringFirstAlphabet($string){ $data=''; $string=explode(' ', $string); $i=0; foreach ($string as $key => $value) { $data.=$value[$i]; } return $data; } 

    Подобно принятому ответу с одним меньшим шагом:

     $my_value = 'Test me more'; $first_word = explode(' ',trim($my_value))[0]; //$first_word == 'Test' 
     $ input = «Проверить меня больше»;
     echo preg_replace ("/ \ s. * $ /", "", $ input);  // "Контрольная работа"
    
     $str='<?php $myvalue = Test me more; ?>'; $s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE); print $s[1]; 

    лично strsplit / strsplit / strtok не поддерживает границы слов, поэтому для получения более аккуратного разделения используйте регулярное выражение с помощью \w

     preg_split('/[\s]+/',$string,1); 

    Это разделило бы слова с границами до предела 1.

     $string = ' Test me more '; preg_match('/\b\w+\b/i', $string, $result); // Test echo $result; /* You could use [a-zA-Z]+ instead of \w+ if wanted only alphabetical chars. */ $string = ' Test me more '; preg_match('/\b[a-zA-Z]+\b/i', $string, $result); // Test echo $result; 

    С уважением, Цюль