Comment puis-je obtenir les 7 derniers caractères d'une chaîne PHP?

278

Comment pourrais-je récupérer les 7 derniers caractères de la chaîne ci-dessous?

Par exemple:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

Ce qui afficherait:

The new string is: 5409els
Dave
la source
8
La question identifiée comme dup n'est pas du tout la même que cette question.
Asaph
13
Il est ironique que je sois ici lorsque je recherche ce sujet sur Google. soupir
LeonardChallis
5
@Asaph j'appelle cela l'effet de pile. Les gens essaient n'importe quoi pour fermer les questions, la première chose qu'ils feront est de le signaler comme un dup simplement pour le signaler
twigg
5
Il est beaucoup plus facile et plus rapide de rechercher le problème sur Google et de trouver une ligne de code dans SO que de parcourir le manuel.
Engin Yapici

Réponses:

597

Utilisez substr()avec un nombre négatif pour le 2e argument.

$newstring = substr($dynamicstring, -7);

Depuis les documents php :

string substr ( string $string , int $start [, int $length ] )

Si start est négatif, la chaîne retournée commencera au début du caractère à partir de la fin de la chaîne.

Asaph
la source
Mais si $ dynamicstring contient moins de 7 caractères, $ newstring sera vide. (au moins sur PHP 5.2.6)
Scott Chu
Vous pouvez toujours vérifier d'abord avec strlen pour voir si le nombre de caractères est supérieur ou égal à 7.
PBwebD
73

euh .. comme ça?

$newstring = substr($dynamicstring, -7);
Vitaly Muminov
la source
6
vous étiez plus rapide :)
milkovsky
14

Des résultats plus sûrs pour travailler avec des codes de caractères multi-octets, utilisez toujours mb_substr à la place substr. Exemple pour utf-8:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;
MERT DOĞAN
la source
11

Il serait préférable d'avoir une vérification avant d'obtenir la chaîne.

$newstring = substr($dynamicstring, -7);

si les caractères sont supérieurs, 7 renvoient les 7 derniers caractères, sinon renvoient la chaîne fournie.

ou faites-le si vous devez renvoyer un message ou une erreur si la longueur est inférieure à 7

$newstring = (strlen($dynamicstring)>7)?substr($dynamicstring, -7):"message";

documentation substr

Abdul Manan
la source
Je pense que l'autre partie est nécessaire pour renvoyer un message. Quelque chose comme des données invalides entrées ou ..
Neri
1
C'est probablement la meilleure réponse, la seule chose qui pourrait l'améliorer est une référence au manuel php.
Mark Carpenter Jr
2

Par souci de simplicité, si vous ne souhaitez pas envoyer de message, essayez ceci

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
mariovials
la source
0

pour les 7 derniers caractères

$newstring = substr($dynamicstring, -7);

$ newstring: 5409els

pour les 7 premiers caractères

$newstring = substr($dynamicstring, 0, 7);

$ newstring: 2490slk

développeur
la source
-1

7 derniers caractères d'une chaîne:

$ rest = substr ("abcdefghijklmnop", -7); // renvoie "jklmnop"

keerthi
la source