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


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.


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


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') ;

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


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 ) );

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


-1

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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.