2010-11-19 12 views
36

was ist der schnellste Weg, nur die important_stuff Teil aus einem String wie folgt zu erhalten:Erhalten Sie die Zeichenfolge nach einer Zeichenkette aus einem String

bla-bla_delimiter_important_stuff 

_delimiter_ ist immer da, aber der Rest des Strings kann sich ändern .

+1

scheint etwas Verwirrung darüber zu sein, ob die Unterstriche buchstäblich da sind oder nicht. irgendwelche Lösungen unten sind gut. –

+0

Sie könnten ['s ($ str) -> afterFirst ('_delimiter_')'] finden (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L435) oder ['s ($ str) -> afterLast ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L445) hilfreich, da gefunden in [diese eigenständige Bibliothek] (https://github.com/delight-im/PHP-Str). – caw

Antwort

54

hier:

$arr = explode('delimeter', $initialString); 
$important = $arr[1]; 
+1

Einfach und effektiv, gute Antwort. – jsims281

+6

In PHP 5.4 ... für diesen Fall besonders ... können Sie den folgenden Liner machen ... '$ wichtig = explodieren (" delimeter ", $ initialString) [1];' – zgr024

+5

3 cheers für Dereferenzierung! = D –

4
$string = "bla-bla_delimiter_important_stuff"; 
list($junk,$important_stufF) = explode("_delimiter_",$string); 

echo $important_stuff; 
> important_stuff 
+2

Ich mag die Verwendung von Liste. als du das erste array hattest, dachte ich, du hättest mir eine python-ähnliche fähigkeit von php gezeigt, die ich noch nicht kannte! –

+0

cool. Danke :) – Alex

6
 
$importantStuff = array_pop(explode('_delimiter_', $string)); 
+1

Dies wird einen 'E_STRICT' Fehler (' Strict Standards: Nur Variablen sollten durch Verweis übergeben werden ') als Array_pop Verweis verwendet, aber es funktioniert immer noch. –

30
$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff')); 
+0

Sehr intelligente Lösung. – andcl

+1

Dies wird werfen: Strenge Standards: Nur Variablen sollten als Referenz übergeben werden. Sie müssen die explode() einer Temp Var zuweisen. –

4

Ich mag diese Methode:

$str="bla-bla_delimiter_important_stuff"; 
$del="_delimiter_"; 
$pos=strpos($str, $del); 

Schneiden von Ende des Trennzeichen der Zeichenkette Ende

Anmerkung:

1) für substr der Zeichenfolge Start bei '0', während für strpos & Strlen die Größe der Zeichenfolge nimmt (beginnt bei '1')

2) unter Verwendung von 1 Zeichenbegrenzer vielleicht eine gute Idee

Verwandte Themen