2010-09-22 12 views
36

In PHP, was ist der einfachste Weg, den Teil eines Strings vor dem ersten Auftreten eines bestimmten Zeichens zurückzugeben?Gibt den Teil eines Strings vor dem ersten Auftreten eines Zeichens in PHP zurück

Zum Beispiel, wenn ich eine Zeichenfolge haben ...

„Der schnelle braune foxed sprang über den etc etc.“

... und ich bin Filterung für ein Leerzeichen (“„), würde die Funktion zurückgeben ‚Der‘

Dank!

+0

Sie finden könnte [ 's ($ str) -> before (‘ ‚)'] (https : //github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L389) hilfreich, wie in [dieser eigenständigen Bibliothek] (https://github.com/delight-im/) PHP-Str). – caw

Antwort

50

Sie könnte dies tun:

$string = 'The quick brown fox jumped over the lazy dog'; 
$substring = substr($string, 0, strpos($string, ' ')); 

Aber Ich mag diese besser:

list($firstWord) = explode(' ', $string); 
+0

Würde das nicht Fehler werfen? Ich dachte, dass Link für die Anzahl der Variablen in dem Array, das du explodierst, einen passenden Variablensatz (oder leeres Komma getrennt) haben muss? – Alex

+1

für den Fall, dass Sie die Variable zurückgeben wollen, anstatt sie zu übergeben 'return array_shift (explode ('', $ string));' –

+2

Wenn die Zeichenfolge (hier ein Leerzeichen) nicht gefunden wird, gibt die erste eine leere Zeichenfolge zurück. Die zweite gibt die gesamte Zeichenfolge zurück. – Progrock

18

strstr() das erste Vorkommen eines Strings finden. Gibt einen Teil der Heuhaufenkette zurück, beginnend mit dem ersten Vorkommen der Nadel bis zum Ende des Heuhaufens.

Dritter Parameter: Wenn TRUE, gibt strstr() den Teil des Heuhaufens vor dem ersten Auftreten der Nadel zurück (mit Ausnahme der Nadel).

$haystack = 'The quick brown foxed jumped over the etc etc.'; 
$needle = ' '; 
echo strstr($haystack, $needle, true); 

Drucke The.

+0

Ich habe diesen Code ausprobiert und eine Warnung erhalten:" Falsche Parameteranzahl für strstr() ". Der Grund ist, dass dieser Code nur ab PHP 5.3.0 funktioniert. Ich benutze eine frühere Version von PHP. – matsolof

+1

Wenn die Nadel nicht gefunden wird, wird false zurückgegeben. Was Sie erwarten würden. So persönlich fühlt sich das als die bessere Antwort an. In vielen der anderen Antworten müssen Sie wahrscheinlich auch überprüfen, ob die Zeichenfolge das Token enthält. Andernfalls erhalten Sie unvorhersehbare Ergebnisse. Es sei denn, es ist selbstverständlich. – Progrock

+0

Sauber und einfach mit guten Namenskonventionen für ein klares Verständnis. – Kray

4

Wie wäre es damit:

$string = "The quick brown fox jumped over the etc etc."; 

$splitter = " "; 

$pieces = explode($splitter, $string); 

echo $pieces[0]; 
+0

Wenn der Splitter nicht gefunden wird, wird die gesamte Zeichenfolge zurückgegeben. – Progrock

+0

@Progrock, was ist los? Was möchten Sie sonst noch? – Soaku

+0

@Soaku, es ist nur eine Beobachtung. – Progrock

73

für Googler: strtok ist besser für die

echo strtok("The quick brown fox", ' '); 
+5

Für mich scheint dies die beste Lösung zu sein. – matsolof

+0

Beste Lösung [2]! –

+1

Einziger Wermutstropfen über strtok, wenn der Token nicht gefunden wird, gibt er den ganzen String zurück. – Progrock

Verwandte Themen