Как получить первое слово предложения в 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, который имеет так много ответов, используя его, я не буду указывать, как сделать его.
хотя немного поздно, но у 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'
лично 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;
}
вы можете сделать это, используя PHP string function substr без конветирования строки в массив.
$string = 'some text here';
$stringLength= strlen($string);
echo ucfirst(substr($string,-$stringLength-1, 1));
//выход S