Я хочу извлечь первое слово переменной из строки. Например, возьмите этот ввод:
<?php $myvalue = 'Test me more'; ?>
Результат должен быть Test
, который является первым словом ввода.
Как я могу это сделать?
Я хочу извлечь первое слово переменной из строки. Например, возьмите этот ввод:
<?php $myvalue = 'Test me more'; ?>
Результат должен быть Test
, который является первым словом ввода.
Как я могу это сделать?
Вы можете использовать функцию explode следующим образом:
$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];
Подобно принятому ответу с одним меньшим шагом:
$my_value = 'Test me more';
$first_word = explode(' ',trim($my_value))[0];
//$first_word == 'Test'
На всякий случай вы не уверены, что строка начинается со слова...
$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];
?>
personal 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;
}
Вы можете сделать это, используя строковую функцию PHP substr без преобразования строки в массив.
$string = 'some text here';
$stringLength= strlen($string);
echo ucfirst(substr($string,-$stringLength-1, 1));
//вывод S
$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;
}