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

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

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

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

17 ответов


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

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

дополнительные сведения и примеры см. В разделе элемент функции 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]*)(.*)/', '', $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