文字列から変数の最初の単語を抽出したい。たとえば、次の入力を受け取ります。
<?php $myvalue = 'Test me more'; ?>
結果の出力は、入力の最初のワードであるTest
である必要があります。これどうやってするの?
次のように explode 関数を使用できます。
$myvalue = 'Test me more';
$arr = explode(' ',trim($myvalue));
echo $arr[0]; // will print Test
文字列関数( strtok )があり、これを使用して、文字列をいくつかの小さな文字列(tokens)に分割できますセパレーター。このスレッドの目的のために、Test me more
の最初のWord(最初のスペース文字の前に定義される)は、tokenizingによって取得できます。スペース文字の文字列。
<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>
詳細と例については、 strtok PHPマニュアルページ を参照してください。
PHP 5.3がある場合
$myvalue = 'Test me more';
echo strstr($myvalue, ' ', true);
$myvalue
が1つのWordの文字列である場合、strstr
はこの場合何も返しません。解決策は、テスト文字列にスペースを追加することです。
echo strstr( $myvalue . ' ', ' ', true );
文字列にWordが1つしかない場合でも、常に文字列の最初のWordが返されます
別の方法は次のようなものです。
$i = strpos($myvalue, ' ');
echo $i !== false ? $myvalue : substr( $myvalue, 0, $i );
または、explodeを使用します。explodeを使用すると非常に多くの回答が得られるため、その方法を気にしません。
できる
echo current(explode(' ',$myvalue));
少し遅れていますが、PHPにはこれに対するより良い解決策が1つあります。
$words=str_Word_count($myvalue, 1);
echo $words[0];
1つ少ないステップで受け入れられる回答に似ています:
$my_value = 'Test me more';
$first_Word = explode(' ',trim($my_value))[0];
//$first_Word == 'Test'
文字列がWordで始まるかどうかわからない場合に備えて...
$input = ' Test me more ';
echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test
<?php
$value = "Hello world";
$tokens = explode(" ", $value);
echo $tokens[0];
?>
Explodeを使用して、入力のすべてのWordを取得し、結果の配列の最初の要素を出力します。
Split関数を使用すると、stringから最初のWordを取得することもできます。
<?php
$myvalue ="Test me more";
$result=split(" ",$myvalue);
echo $result[0];
?>
個人的にstrsplit
/explode
/strtok
はWordの境界をサポートしていないため、より正確に分割するには、\w
で正規表現を使用します
preg_split('/[\s]+/',$string,1);
これにより、境界のある単語が1に制限されます。
$ input = "もっとテストしてください"; echo preg_replace( "/\s。* $ /"、 ""、$ input); //「テスト」
$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];
文字列を最初のWordと残りの文字列の2つの部分にトークン化する関数。
戻り値:$return
配列にそれぞれfirst
およびremaining
キーがあります。最初のチェックstrpos( $title," ") !== false
は、文字列にWordが1つだけでスペースが含まれていない場合に必須です。
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;
}