web-dev-qa-db-ja.com

PHPで文の最初の単語を取得する方法は?

文字列から変数の最初の単語を抽出したい。たとえば、次の入力を受け取ります。

<?php $myvalue = 'Test me more'; ?>

結果の出力は、入力の最初のワードであるTestである必要があります。これどうやってするの?

135
ali

次のように explode 関数を使用できます。

$myvalue = 'Test me more';
$arr = explode(' ',trim($myvalue));
echo $arr[0]; // will print Test
222
codaddict

文字列関数( strtok )があり、これを使用して、文字列をいくつかの小さな文字列(tokens)に分割できますセパレーター。このスレッドの目的のために、Test me moreの最初のWord(最初のスペース文字の前に定義される)は、tokenizingによって取得できます。スペース文字の文字列。

<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>

詳細と例については、 strtok PHPマニュアルページ を参照してください。

262
salathe

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を使用すると非常に多くの回答が得られるため、その方法を気にしません。

35
Yacoby

できる

echo current(explode(' ',$myvalue));
21
AntonioCS

少し遅れていますが、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'
6
wheelmaker

文字列がWordで始まるかどうかわからない場合に備えて...

$input = ' Test me more ';
echo preg_replace('/(\s*)([^\s]*)(.*)/', '$2', $input); //Test
5
Lupuz
<?php
  $value = "Hello world";
  $tokens = explode(" ", $value);
  echo $tokens[0];
?>

Explodeを使用して、入力のすべてのWordを取得し、結果の配列の最初の要素を出力します。

4
Ulf

Split関数を使用すると、stringから最初のWordを取得することもできます。

<?php
$myvalue ="Test me more";
$result=split(" ",$myvalue);
echo $result[0];
?>
4
rekha_sri

strtok は、extractまたは preg_* 関数よりも高速です。

3
HM2K

個人的にstrsplit/explode/strtokはWordの境界をサポートしていないため、より正確に分割するには、\wで正規表現を使用します

preg_split('/[\s]+/',$string,1);

これにより、境界のある単語が1に制限されます。

2
RobertPitt
 $ input = "もっとテストしてください"; 
 echo preg_replace( "/\s。* $ /"、 ""、$ input); //「テスト」
1
markcial
$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

1
Ciul
public function getStringFirstAlphabet($string){
    $data='';
    $string=explode(' ', $string);
    $i=0;
    foreach ($string as $key => $value) {
        $data.=$value[$i];
    }
    return $data;
}
1
RafayAhmed

文字列を配列に変換せずに、PHP文字列関数substrを使用して実行できます。

 $string = 'some text here';
 $stringLength= strlen($string);
 echo ucfirst(substr($string,-$stringLength-1, 1));

// Sを出力

1
Afraz Ahmad
$str='<?php $myvalue = Test me more; ?>';
$s = preg_split("/= *(.[^ ]*?) /", $str,-1,PREG_SPLIT_DELIM_CAPTURE);
print $s[1];
0
ghostdog74

文字列を最初の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;
}
0