Vous pouvez utiliser une expression rationnelle preg_match
, comme ceci:
$string = "Conacu P PPL Europe/Bucharest 680979";
$matches = array();
if (preg_match('#(\d+)$#', $string, $matches)) {
var_dump($matches[1]);
}
Et vous obtiendrez:
string '680979' (length=6)
Et voici quelques informations:
- Le
#
à le début et la fin de l'expression rationnelle sont les délimiteurs - ils ne signifient rien: ils indiquent simplement le début et la fin de l'expression rationnelle; et vous pouvez utiliser quel que soit le caractère que vous voulez (les gens utilisent souvent /
)
- Le « $ » à la fin du motif signifie « fin de la chaîne »
- le
()
signifie que vous voulez capturer ce qui est entre eux
- avec
preg_match
, le tableau donné en tant que troisième paramètre contiendra les données capturées
- le premier élément de cette matrice sera toute chaîne correspondante
- et les prochains contiendront chacune des données appariées dans un ensemble de
()
- les
\d
signifie "un certain nombre"
- et le
+
signifie une ou plusieurs fois
Alors:
- apparier un ou plusieurs numéro
- à la fin de la chaîne
Pour plus d'informations, vous pouvez jeter un oeil à PCRE Patterns et Pattern Syntax
.
Est-il un avantage particulier à utiliser # autour de votre regex au lieu de /? Juste pour ma propre curiosité? –
Merci, cela fonctionne très bien. – Psyche
Vous n'avez pas besoin du groupement. '$ matches [0]' contient déjà toute la correspondance. – Gumbo