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



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



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


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

949   17  

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 Строковой функции substr без преобразования строки в массив.

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

//выход S

Comments

    Ничего не найдено.