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

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

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

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

Ответ 1

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

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

Ответ 2

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

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

Подробнее и примеры см. на странице strtok PHP.

Ответ 3

Если у вас 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, в котором так много ответов, используя его, я не буду указывать, как это сделать.

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

//$first_word == 'Test'

Ответ 7

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

$input = ' Test me more ';
echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test

Ответ 8

<?php
  $value = "Hello world";
  $tokens = explode(" ", $value);
  echo $tokens[0];
?>

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

Ответ 9

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

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

Ответ 10

strtok быстрее extract или preg_*.

Ответ 11

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

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

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

Ответ 12

$input = "Test me more";
echo preg_replace("/\s.*$/","",$input); // "Test"

Ответ 13

$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;

С уважением, Ciul

Ответ 14

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

Ответ 15

Вы можете сделать это, используя строковую функцию PHP substr без преобразования строки в массив.

 $string = 'some text here';
 $stringLength= strlen($string);
 echo ucfirst(substr($string,-$stringLength-1, 1));

//вывод S

Ответ 16

$str='<?php $myvalue = Test me more; ?>';
$s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE);
print $s[1];

Ответ 17

Функция, которая разбивает строку на две части: первое слово и оставшуюся строку.

Возвращаемое значение: Он будет иметь клавиши first и remaining в массиве $return соответственно. Первая проверка strpos( $title," ") !== false обязательна в том случае, если строка содержит только одно слово и без пробела.

function getStringFirstWord( $title ){

    $return = [];

    if( strpos( $title," ") !== false ) {

        $firstWord = strstr($title," ",true);
        $remainingTitle = substr(strstr($title," "), 1);

        if( !empty( $firstWord ) ) {
            $return['first'] = $firstWord;
        }
        if( !empty( $remainingTitle ) ) {
            $return['remaining'] = $remainingTitle;
        }
    }
    else {
        $return['first'] = $title;
    }

    return $return;
}