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


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

<?php $myvalue = 'Test me more'; ?>
Результирующий вывод должен быть Test, который является первым словом входного сигнала. Как я могу это сделать?
17 121

17 ответов:

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

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

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

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

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

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

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

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];
?>

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

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

//$first_word == 'Test'

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

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

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

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

$input = "Test me more";
echo preg_replace("/\s.*$/","",$input); // "Test"
$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

public function getStringFirstAlphabet($string){
    $data='';
    $string=explode(' ', $string);
    $i=0;
    foreach ($string as $key => $value) {
        $data.=$value[$i];
    }
    return $data;
}
$str='<?php $myvalue = Test me more; ?>';
$s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE);
print $s[1];

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

Возвращаемое значение: он будет иметь 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;
}

Вы можете сделать это с помощью PHP string function substr без преобразования строки в массив.

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

/ / выход S