Я хочу извлечь первое слово переменной из строки. Например, возьмите этот ввод:
<?php $myvalue = 'Test me more'; ?>
Результат должен быть Test
, который является первым словом ввода. Как я могу это сделать?
Вы можете использовать функцию взрыва следующим образом:
$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 ?>
Дополнительные сведения и примеры см. На странице руководства PHP strtok .
Если у вас есть 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 );
Или используя взрыв, в котором так много ответов, используя его, я не буду беспокоиться о том, как это сделать.
Вы могли бы сделать
echo current(explode(' ',$myvalue));
Хотя это немного поздно, но 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]; ?>
strtok
быстрее, чем функции extract
или preg_*
.
public function getStringFirstAlphabet($string){ $data=''; $string=explode(' ', $string); $i=0; foreach ($string as $key => $value) { $data.=$value[$i]; } return $data; }
Подобно принятому ответу с одним меньшим шагом:
$my_value = 'Test me more'; $first_word = explode(' ',trim($my_value))[0]; //$first_word == 'Test'
$ input = «Проверить меня больше»; echo preg_replace ("/ \ s. * $ /", "", $ input); // "Контрольная работа"
$str='<?php $myvalue = Test me more; ?>'; $s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE); print $s[1];
лично strsplit
/ strsplit
/ 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;
С уважением, Цюль