J'ai une chaîne et j'aimerais tout avoir après une certaine valeur. La chaîne commence toujours par un ensemble de nombres, puis un trait de soulignement. J'aimerais obtenir le reste de la chaîne après le trait de soulignement. Donc, par exemple, si j'ai les chaînes suivantes et ce que je voudrais retourner:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Comment puis-je faire quelque chose comme ça?
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
est une fonction négligée pour ce genre de chose. Il est censé être assez rapide.Une chaîne vide comme celle-ci forcera le retour du reste de la chaîne.
NB s'il n'y avait rien du tout après le '_' vous obtiendrez une
FALSE
valeur pour$allTheRest
laquelle, comme indiqué dans la documentation , il faut tester avec ===, pour la distinguer des autres valeurs fausses.la source
strtok('a_b', '_')
retourneraa
maisstrtok('_b', '_')
retournerab
, pas une chaîne vide comme vous vous enVoici la méthode en utilisant
explode
:ou:
En spécifiant
2
lelimit
paramètre dansexplode()
, il renvoie un tableau avec 2 éléments maximum séparés par le délimiteur de chaîne. Renvoyer le 2ème élément ([1]
) donnera le reste de la chaîne.Voici un autre one-liner en utilisant
strpos
(comme suggéré par @flu ):la source
si quelqu'un a besoin d'extraire la première partie de la chaîne, alors peut essayer,
Requete:
Production:
This_is_a_string
la source
Un autre moyen simple, en utilisant strchr () ou strstr () :
la source
En une seule déclaration, ce serait.
la source
J'utilise strrchr (). Par exemple pour trouver l'extension d'un fichier, j'utilise cette fonction:
la source