10
votes

Vérifiez si une chaîne se termine par un numéro en PHP

J'essaie de mettre en œuvre la fonction ci-dessous. Serait-il préférable d'utiliser un type de regex ici? J'ai besoin de capturer le numéro aussi. XXX


1 commentaires

Comme ce n'est qu'un personnage, il est probablement préférable de ne pas vous embêter à l'aide de Regex.


5 Réponses :


29
votes

retour is_numeric (SUBSTR ($ string, -1, 1));

Ceci ne vérifie que si le dernier caractère de la chaîne est numérique, si vous souhaitez attraper et renvoyer des numéros multidigants, vous devrez peut-être utiliser une regex.

Une regex appropriée serait / [0-9] + $ / qui prendra une chaîne numérique si elle est à la fin d'une ligne.


2 commentaires

Pour la regex, vous pouvez remplacer [0-9] avec \ D


Et pour le premier caractère, vous pouvez simplement le basculer pour retourner is_numeric (substr ($ string, 0, 1));



7
votes
$test="abc123";
//$test="abc123n";
$r = preg_match_all("/.*?(\d+)$/", $test, $matches);
//echo $r;
//print_r($matches);
if($r>0) {
    echo $matches[count($matches)-1][0];
}
the regex is explained as follows:.*? - this will take up all the characters in the string from the start up until a match for the subsequent part is also found.(\d+)$ - this is one or more digits up until the end of the string, grouped.without the ? in the first part, only the last digit will be matched in the second part because all digits before it would be taken up by the .*

0 commentaires

1
votes

À mon avis, le moyen simple de trouver une chaîne se termine par le numéro est xxx


0 commentaires

1
votes

Pour éviter une erreur d'index non définie potentielle Utilisez xxx

à la place.


1 commentaires

Bon code court, mais si le code $ est vide. Je vais lancer un avertissement: décalage de chaîne non initialisée -1. Vous devez ajouter un test pour vérifier si la chaîne est vide, pourriez-vous s'il vous plaît voir ma réponse que je gère ce cas!



0
votes

Premièrement, Prenez la longueur de la chaîne et vérifiez s'il est égal à zéro (vide) puis renvoie false . Deuxièmement, Vérifiez une fonction intégrée sur le dernier caractère $ len-1 .

is_numérique (var) retourne booléen si une variable est une chaîne numérique ou non. xxx

tests : xxx < em> résultats : xxx


0 commentaires