strcspn peut être un peu déroutant. J'ai régulièrement consulter le manuel après avoir quelque temps sans l'utiliser parce que je suis strcspn et strspn mélangé parce qu'ils ne la chose exactement le contraire. Bien que j'ai une idée pour se rappeler qui on est, qui en ce moment et III de cela plus tard.
strcspn regarde essentiellement pour les caractères qui ne sont pas dans ce masque. Du manuel,
strcspn int (string $ str1, string $ str2 [, int $ start [, int $ length]])
Retourne la longueur du segment initial de str1 qui ne contient aucun des caractères en str2.
Si vous suivez à la fonction de la source, vous venez à cette où vous pouvez voir comment la fonction fonctionne en interne. Elle marche seulement à travers la chaîne de la recherche de quelque chose, il ne s'attend pas, cherche alors quelque chose qu'il ne s'attendent et renvoie la longueur de ce segment.
etc / standard / string.c: 1571
PHPAPI size_t php_strcspn(char *s1, char *s2, char *s1_end, char *s2_end)
{
register const char *p, *spanp;
register char c = *s1;
for (p = s1;;) {
spanp = s2;
do {
if (*spanp == c || p == s1_end) {
return p - s1;
}
} while (spanp++ < (s2_end - 1));
c = *++p;
}
/* NOTREACHED */
}
- PHPAPI size_t php_strcspn(char *s1, char *s2, char *s1_end, char *s2_end)
- {
- register const char *p, *spanp;
- register char c = *s1;
-
- for (p = s1;;) {
- spanp = s2;
- do {
- if (*spanp == c || p == s1_end) {
- return p - s1;
- }
- } while (spanp++ < (s2_end - 1));
- c = *++p;
- }
- /* NOTREACHED */
- }
Tout retour strcspn temps un certain nombre autre que zéro, theres mauvais caractères dans l'entrée et nous écraser l'entrée toute mauvaise avec la valeur par défaut. Ceci est juste un simple cours de l'action après avoir constaté des entrées incorrectes, en réalité, vous auriez probablement finir par les fautes de frappe possible, vérifier une table 301, ou quelque chose du genre.
Maintenant, autant que ce truc pour se souvenir de la fonction ne dont j'ai déjà parlé, Ill à emprunter un commentaire du manuel PHP.
strcspn () peut aussi être considérée comme analogue à l'expression régulière suivante:
<?php
// where ... represents the mask of characters
preg_match('/[^ ...]/', substr($subject, $start, $length) );
?>
- <?php
- // where ... represents the mask of characters
- preg_match('/[^ ...]/', substr($subject, $start, $length) );
- ?>
Si je me souviens strcspn et strspn que les classes de caractères à partir d'expressions régulières, il me suffit de rappeler que dans une classe de caractères complémentée il, que le caractère extra "^" et dans le strcspn nom de la fonction il ya aussi un caractère supplémentaire «C».
-
Je ne peux vraiment pas dire grand-chose is_readable, je l'utilise dans l'exemple parce que le ton de la conversation semble être la sécurité et l'erreur-prevension-sage est is_readable moins sujets aux accidents que quelque chose comme file_exists. Je préfère utiliser file_exists. Im assez bien à s'assurer quelque chose se passe au travail avant qu'il ne devienne, à l'aide de valeurs par défaut comme je le fais Im ne vais pas faire une erreur à propos d'un fichier illisible, sauf par un échec catastrauphic, et des theres aucune raison pour que mon autorisations de fichier pour changer plus tard.
Strong with this one, the sudo is.