it-swarm.com.de

Wie bekomme ich das erste Wort eines Satzes in PHP?

Ich möchte das erste Wort einer Variablen aus einer Zeichenfolge extrahieren. Nehmen Sie zum Beispiel diese Eingabe:

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

Die resultierende Ausgabe sollte Test sein, das ist das erste Wort der Eingabe . Wie kann ich das tun?

123
ali

Sie können die Funktion explode wie folgt verwenden:

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

Es gibt eine String-Funktion ( strtok ), die verwendet werden kann, um einen String in kleinere Strings (tokens) aufzuteilen, basierend auf einigen Trennzeichen. Für die Zwecke dieses Threads kann das erste Wort (definiert als alles vor dem ersten Leerzeichen) von Test me more durch tokenize der Zeichenfolge des Leerzeichens erhalten werden.

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

Weitere Einzelheiten und Beispiele finden Sie auf der Manpage strtok PHP .

250
salathe

Wenn Sie PHP haben, 5.3

$myvalue = 'Test me more';
echo strstr($myvalue, ' ', true);

beachten Sie, dass wenn $myvalue eine Zeichenfolge mit einem Wort ist, strstr in diesem Fall nichts zurückgibt. Eine Lösung könnte sein, ein Leerzeichen an die Testzeichenfolge anzufügen:

echo strstr( $myvalue . ' ', ' ', true );

Das gibt immer das erste Wort der Zeichenfolge zurück, selbst wenn die Zeichenfolge nur ein Wort enthält

Die Alternative ist so etwas wie:

$i = strpos($myvalue, ' ');
echo $i !== false ? $myvalue : substr( $myvalue, 0, $i );

Oder die Verwendung von explodieren, das so viele Antworten enthält, dass ich mich nicht darum kümmern muss, wie es geht.

35
Yacoby

Du könntest es tun

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

Auch wenn es etwas spät ist, aber PHP hat dafür eine bessere Lösung:

$words=str_Word_count($myvalue, 1);
echo $words[0];

Nur für den Fall, dass Sie nicht sicher sind, ob der String mit einem Word beginnt ...

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

Verwenden Sie einfach explodieren, um jedes Wort der Eingabe abzurufen und das erste Element des resultierenden Arrays auszugeben.

4
Ulf

Mit der Split-Funktion können Sie auch das erste Word von String abrufen.

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

Ähnlich einer akzeptierten Antwort mit einem Schritt weniger:

$my_value = 'Test me more';
$first_Word = explode(' ',trim($my_value))[0];

//$first_Word == 'Test'
4
wheelmaker

strtok ist schneller als extract oder preg_* Funktionen.

3
HM2K

persönlich strsplit/explode/strtok unterstützt keine Word-Grenzen. Um einen akkutiveren Split zu erhalten, verwenden Sie einen regulären Ausdruck mit dem \w

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

Dies würde Wörter mit Grenzen auf ein Limit von 1 aufteilen.

2
RobertPitt
 $ input = "Teste mich mehr"; 
 echo preg_replace ("/\s. * $ /", "", $ input); // "Prüfung"
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;

Grüße, 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

Sie können dies mit PHP String-Funktion substr tun, ohne String in ein Array zu konvertieren.

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

// Ausgabe S

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

Funktion, die eine Zeichenkette in zwei Teile, das erste Wort und die verbleibende Zeichenfolge, tokenisiert.

Rückgabewert: Es wird first und remaining im $return-Array angegeben . Die erste Prüfung strpos( $title," ") !== false ist obligatorisch, wenn string nur ein Wort und kein Leerzeichen enthält.

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