Как получить первое слово предложения в PHP?
Я хочу извлечь первое слово переменной из строки. Например, возьмем такой ввод:
<?php $myvalue = 'Test me more'; ?>
Результирующий вывод должен быть Test
, который является первым словом входного сигнала.
Как я могу это сделать?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, который имеет так много ответов, используя его, я не буду утруждать себя указанием, как это сделать.
Несмотря на то, что это немного поздно, но 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'
Лично
strsplit
/explode
/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;
С уважением, 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; }