Ich habe eine Zeichenfolge und möchte alles nach einem bestimmten Wert erhalten. Die Zeichenfolge beginnt immer mit einer Reihe von Zahlen und einem Unterstrich. Ich möchte den Rest der Zeichenfolge nach dem Unterstrich erhalten. Zum Beispiel, wenn ich die folgenden Zeichenfolgen habe und was ich zurückgeben möchte:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Wie kann ich so etwas tun?
if (($pos = strpos($data, "_")) !== FALSE) { $whatIWant = substr($data, $pos+1); }
substr($data, (strrpos($data, '_') ?: -1) +1)
.function StrAfterStr($S, $H) { return (($P = strpos($S, $H)) !== false) ? substr($S, $P + 1) : false; }
strtok
ist eine übersehene Funktion für diese Art von Dingen. Es soll ziemlich schnell sein.Eine leere Zeichenfolge wie diese erzwingt die Rückgabe des restlichen Strings.
Hinweis: Wenn nach dem '_' überhaupt nichts mehr vorhanden ist, erhalten Sie einen
FALSE
Wert, für$allTheRest
den, wie in der Dokumentation angegeben , mit === getestet werden muss, um sich von anderen falschen Werten zu unterscheiden.quelle
strtok('a_b', '_')
wird zurückgegeben,a
aberstrtok('_b', '_')
zurückgegebenb
, keine leere Zeichenfolge, wie Sie es erwarten würdenHier ist die Methode mit
explode
:oder:
Durch Angabe
2
deslimit
Parameters inexplode()
wird ein Array mit maximal 2 Elementen zurückgegeben, die durch den Zeichenfolgenbegrenzer getrennt sind. Wenn Sie das 2. Element ([1]
) zurückgeben, erhalten Sie den Rest der Zeichenfolge.Hier ist ein weiterer Einzeiler mit
strpos
(wie von @flu vorgeschlagen ):quelle
Wenn jemand den ersten Teil der Zeichenfolge extrahieren muss, kann er versuchen:
Abfrage:
Ausgabe:
This_is_a_string
quelle
Eine andere einfache Möglichkeit, strchr () oder strstr () zu verwenden :
quelle
In einer einzigen Aussage wäre es.
quelle
Ich benutze strrchr (). Um zum Beispiel die Erweiterung einer Datei zu finden, benutze ich diese Funktion:
quelle