Leaderboard
Popular Content
Showing content with the highest reputation on 27/08/2014 in all areas
-
Bonjour, voici une présentation des bases de l'électronique numérique : la logique Booléenne ( ou algèbre de Boole ) . Sujet en général passionnant pour les fans d'informatique et d'électronique Tout d'abord, qu'est-ce qui ce cache derrière ce nom étrange ? : L'algèbre de Boole, ou calcul booléen, est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques. Plus spécifiquement, l'algèbre booléenne permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs du calcul des propositions. Elle fut initiée en 1854 par le mathématicien britannique George Boole. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques. Elle fut utilisée la première fois pour les circuits de commutation téléphoniques par Claude Shannon. Merci Wikipédia Avant de lire ce post, je vous conseille de savoir compter en binaire, si ce n'est pas votre cas, vous trouverez des explications claires ici : Bien, vous savez compter en binaire mais vous ne savez toujours pas concrètement ce qu'est l'algèbre booléenne, on avance pas décidément. L'algèbre de Boole consiste à traiter les informations avec la plus simple ( et pourtant tellemeeeeeeent complexe... ) des logique, ici l'information est soit vraie, soit fausse ( 1 ou 0 ) pas de doute possible. On va donc associer ces 0 et ces 1 grâce à ce que l'on appelle des fonctions logiques. Je vous propose donc d'étudier ces fonctions logiques de base puis de s'amuser avec pour voir leur potentiel ! I / fonctions logiques ( ou opérateurs logiques ) A/ fonction ET (conjonction) AND nous allons représenter cette fonction par un petit schéma... a et b sont nos entrées et L est la sortie de al fonction logique. Voici l'équation : L = a . b ( à lire L = a ET b ) rappelons que nous travaillons en binaire, a et b valent donc soit 0 soit 1. l'équation nous dit que L ne vaut 1 si et seulement si a ET b valent tous deux 1... d'où le nom. Un autre outil sympathique pour se représenter une fonction logique est ce que l'on appelle une table de vérité : les lignes sont à lire ainsi = "0 et 0 font 0", "0 et 1 font 0" ... et ainsi de suite. B/ fonction OU (disjonction) OR allon un peu plus vite : avec l'équation : L = a+b ( à lire L = a OU b ) C / fonction NON (négation) NOT D / fonction NON ET (conjonction négative) NAND Il s'agit en fait d'une fonction ET suivie d'une fonction NON E / fonction NON OU (disjonction négative) NOR F / fonction OU EXCLUSIF ( disjonction exclusive ) XOR En général les débutants butent un peu sur celle-là... on peut la traduire ainsi : a OU b MAIS pas les deux. Voici comme d'habitude schéma, table de vérité et équation : Fun fact : les développeurs Assembleur utilisent souvent cette fonction pour remettre à 0 une variable ( un registre ) : xor ax,ax en effet, si vous vous amusez à poser l'opération ( imaginons que ax vaut 42, soit 00101010 ) : 00101010 xor 00101010 = 00000000 et oui, 0 ou 0 mais pas les deux, ça fait 0 ; 1 ou 1 MAIS PAS LES DEUX, ça fait 0... cette méthode est plus courte (en nombre d'octet) que de mettre 0 dans la variable directement : mov ax, 0 Mais on s'éloigne du sujet originel... il nous reste une dernière fonction logique ! G / fonction NON OU EXCLUSIF (disjonction exclusive négative) XNOR Il s'agit bêtement d'une xor avec une not derrière... Vous remarquez cette bulle derrière la fonction logique à la place d'un petit triangle ? c'est une autre représentation pour dire que l'on à inversé la sortie ( on y a mit une fonction NON ). Pfiou c'est fini pour la présentation bête et méchante des fonction logiques ! à noter qu'il en exister deux trois autres telles que l'implication ou l'inhibition mais bon, moins utilisées. Petit bonus : le théorème de De Morgan : première loi : deuxième loi : Vous êtes normalement capables de comprendre ceci par vous-même et j'aurais bien du mal à vous l'expliquer mieux que l'équation ! Le meilleur moyen de le maitriser est de faire des exercices... mais je n'ai pas mon cours sous la main Si ça vous intéresse : http://fr.wikipedia.org/wiki/Lois_de_De_Morgan II / faire du calcul ! aaaaaaaaah ! enfin quelque chose d'intéressant ! A / les additionneurs ( adders ) Voyons comment votre ordinateur fait des additions... (à peu près, les ingénieurs de proco on depuis longtemps abandonné cette méthode pour se tourner vers des additionneurs plus performant, notamment le Kogge-stone adder, qui est un carry-look-ahead adder (additionneur à calcul anticipé de retenue ) mais c'est pour une autre histoire ! ) commençons doucement avec le demi additionneur (half-adder) : nous allons additionner deux bits, le bit A et le bit B ( ça va pour le moment ? ) dans le cas où les deux valent 1, on aura 2 en sortie, n'est-ce pas ? il nous faudra donc prévoir deux bits de sortie pour écrire 2 en binaire : 10. Nous avons donc une sortie et une retenue, la sortie correspond à 20 et la retenue à 21 , respectivement nommées S et C (pour carry, retenue en anglais) les équations : C = A.B S = A⊕B schéma et table de vérité : Vous remarquerez que le schéma utilise des fonctions logiques que vous n'avez jamais vues... en fait c'est la représentation américaine (Wikipédia m'a lâchement lâcher (ooh un pléonasme ! ) sur ce coup), croyez-moi la fonction du dessus est une XOR et celle du dessous est une AND. faites un tour ici pour avoir les versions françaises et américaine côte à côte : http://en.wikipedia.org/wiki/Logic_gate Bien, nous pouvons maintenant additionner deux bits... mais qu'en est-il si nos nombres font plus de 1 bit chacun ? Il faudrait faire un half adder sur chaque couple de bits ( les 20 avec les 20, les 21 avec les 21 etc...) puis faire un half-adder entre la retenue des 20 et la sortie des 21 et puis.... et puis on s'écroule sur la table parce que dès qu'il y a plus de 4 bits sur chaque nombre, même le schéma sur une feuille de papier avec un crayon devient un vrai clavaire (j'ai déjà essayer en 4e...). C'est pourquoi on a inventé le full-adder ! Ce petit bijou fait la différence entre la retenue entrante et la retenue sortante, il additionne ainsi trois bits et possède deux bits en sortie. en reliant la retenue sortante (carry out) à la retenue entrante (carry in) du full-adder suivant, on additionne nos nombre sans avoir à gérer un truc ultra-compliqué. on a : A+B+Cin = S+Cout (ici le + est un "plus" et non pas un OU). Pour les équations : S = (A⊕ B )⊕Cin Cout = (A. B ) + (Cin . (A⊕ B ) ) Donc oui la fonction logique tout 0 droite est bien une OU. Je vous avais parlé de relier le Cout d'un adder au Cin du suivant... cela s'appel chainer les additionneurs, mettons que nous voulons faire A+B (plus hein, pas OU) mais que A et B font tous deux 4 bits, ils seront composé comme ceci : A3A2A1A0 et B3B2B1B0 et on chaine les adders comme suit : Et bien ma foi, nous voici rendu avec les additions ! B / la soustraction Et là, c'est le drame, vous avez peur de devoir vous replonger dans des schéma compliqués et incompréhensibles et tout reprendre de 0... Mais non ! si nous rusons il y a moyen de reprendre le travail déjà fait jusque là . Rappellez-vous ... A-B = A+(- B ). Cours de maths niveau 5e. Et pour trouver l'opposé d'un nombre binaire, c'est très simple. Cherchons -12. prenons la valeur absolue : (0b00001100), inversez-le bit à bit => 0b11110011, puis ajouter 1 => 0b11110100. Et voilà votre nombre en binaire signé ( complément à deux ) ! simple non ? et avec des fonctions logiques ? il suffit d'appliquer la fonction NON sur notre chiffre... puis de le faire passer dans un adder avec un 1. Mieux encore, regardez le schéma des full-adders chainés, n'y voyez-vous pas une première retenue entrante inutile ? le voilà notre 1 à ajouter ! pour faire une soustraction, il suffit de faire une addition, sauf que l'on met la première Cin à 1 et que l'on fait passer B par une fonction NON . Mais il y a encore mieux, on peut utiliser le même chainage d'adders pour faire des additions et des soustractions ! il suffit de faire passer B par des fonction XOR, la deuxième entrée de chaque XOR étant reliée... à Cin, ainsi si Cin est à 0, B reste inchangé, Cin est à 0 (sans blague ) et on fait une addition entre A et B. Si Cin est à 1, le XOR va inverser chaque bits de B et le chaînage d'adders va ajouter 1 en plus, on aura une soustraction entre A et B (A-B pour être précis) . en image : photoshop pro here ! Et bien voilà... vos neurones peuvent désormais reposer en paix. Si vous voulez plus de masturbation intellectuelle faites-le moi savoir et je m'attaquerai aux multiplicateurs... et si vous voulez du hardcore je vous proposerai des diviseurs... et pour l'orgasme intellectuel, il y a le sujet qui me tient le plus à coeur : les carry-look-ahead adders ( comme le kogge-stone adder dont j'avais mentionné l'existence ).4 points
-
Bonjour à tous, Je vais vous expliquer comment faire pour faire comme sur notre beau forum pour que lorsque l'on met un lien youtube ou dailymotion le lecteur qui y correspond le remplace: Accédez à votre panel d'administration -> onglet: Configuration -> menu: MyCode Une fois dans ce panel allez dans l'onglet "Ajouter un MyCode": On va commencer avec youtube - Titre: "lien youtube -> vidéo" (vous pouvez mettre ce que vous voulez) - Description: pas besoin - Expression régulière: (\[url\])?https?://(www\.)?youtube\.com/watch\?v=([^ \[]+)(\[/url\])? - Remplacement: <iframe width="560" height="315" src="//www.youtube.com/embed/$3" frameborder="0" allowfullscreen></iframe> - Activé: Oui- Ordre d'analyse: On s'enfou l'expression régulière va cherche ce qui se trouve après .../watch?v= et va l'ajouter dans la balise <iframe> enplus les balises BBCode sont absorbées pour dailymotion même principe(faut juste découper un peu plus l'url): - Titre: "lien dailymotion -> vidéo" (vous pouvez mettre ce que vous voulez) - Description: pas besoin - Expression régulière: (\[url\])?https?://(www\.)?dailymotion\.com/video/([^_]+)(.*)(\[/url\])? - Remplacement: <iframe width="560" height="315" src="//www.dailymotion.com/embed/video/$3" frameborder="0" allowfullscreen></iframe> - Activé: Oui- Ordre d'analyse: On s'enfou Si vous désirez en apprendre plus sur les expressions régulières cliquez ici Et voilà tout simple, j'ajouterais peut-être des images plus tard j'espère que ça vous servira Bon forummage à tous, Cordialement, Mars073.3 points
-
1. Naviguer sur internet via le shell Unix est-ce possible ? Tout est possible ! Il existe de nombreux paquets permettant de le faire. Links en est un parmi tant d'autres mais il est particulièrement bien pensé et assez intuitif (mais ceci n'est que mon avis). Il existe aussi Lynx ou encore w3m. 2. Comment l'utilise-t-on ? Tout d'abord, installer le paquet que vous souhaitez à l'aide de la commande : sudo apt-get install [paquet]. Dans mon exemple, je vais choisir d'installer Links : sudo apt-get install links Ensuite, lancer tout simple links avec cette commande : links Links va vous demandez d'entrer une URL (par exemple, https://google.fr/) puis vous pouvez naviguer sur ce moteur de recherche comme sur votre navigateur à la seule différence que vous n'avez aucune image et aucun curseur.2 points
-
décidement je n'ais pas été très long a l'améliorer en clareté ^^ voici le nouveau code bool colisionfromage(SDL_Rect lanceur, SDL_Rect recepteur, SDL_Rect curseur, double marge) { register double diff; diff = (FindAngle(lanceur, recepteur)+180) - (FindAngle(lanceur, curseur)+180); if (diff < 0) //si diff est négatif, on le passe en positif { diff *= -1; } if (diff <= 0 || diff >= marge/2) //si la différence est plus grande que la marge, nous retournons FAUX { return FALSE; } return TRUE; } double FindAngle(SDL_Rect A, SDL_Rect { register int difx, dify; difx = (A.x + A.w/2) - (B.x + B.w/2); dify = (A.y + A.h/2) - (B.y + B.h/2); return atan2(dify, difx)* 57.296; }2 points
-
Bonjour, voici une petite méthode pour faire de l'ajax simple sans aucun plugin : le DSL Dans l'idée nous allons apprendre à créer une page qui affiche un nombre et un bouton pour incrémenter ce nombre. Afin de stocker ce nombre, nous allons le ranger bien au chaud dans une BDD. Notre page devra donc : incrémenter ce nombre dans la BDD sans rechargement de la page mettre à jour l'affichage du nombre, toujours sans recharger la page (sinon c'est trop simple ) L'utilisation d'une BDD juste pour un nombre peut paraitre exhaustive, mais l'idée est d'appliquer la méthode avec plusieurs nombres, possédants chacun un id... on verra ça après Nous allons utiliser deux pages : index.php et incrementation.php. Voici index.php : <?php $bdd = new PDO('mysql:host=kpsoftware.fr;dbname= toto','jean-michel','fjhbqfkqsfhgsjkgbs'); ?> /* connexion à la BDD */ <div style="text-align: center;"> <span class="leNombre"> <?php $nombre=$bdd->query('SELECT nombre FROM nombre'); $nombre=$nombre->fetch(); echo $nombre['nombre']; ?> </span> /* on à notre nombre ! */ <input value="Plus un !" type="button"/> </div> <script> /* les choses sérieuses commencent ici */ function addEvent(element, event, func){ if (element.attachEvent) { element.attachEvent('on'+event, func); } else { element.addEventListener(event, func, true); } } /* ceci est notre fonction pour ajouter des évènement en javascript */ (function(){ var elements = document.getElementsByTagName('input') for (var i=0;i<elements.length;i++){ addEvent(elements[i],'click',function(e){ /* on ajoute un évènement sur les "input" */ var target=e.target || e.srcElement; if(target.value == 'Plus un !'){ /* quand un "input" est cliqué, on teste sa "value" */ /* si cette "value" est "plus un !", alors on créer un script, dont la source est une page php : incrementation.php. Il ne reste plus qu'à l'ajouter ! */ var scriptElement = document.createElement('script'); scriptElement.src ='incrementation.php'; document.body.appendChild(scriptElement); } }); } })(); /* à ce stade, incrementation.php à été exécuté, je vous invite à aller voir cette page avant de lire la fin de index.php */ function refreshNombre(newNombre){ var spanElements = document.getElementsByTagName('span'); var newSpan = document.createTextNode(' ' + newNombre + ' '); /* on créer notre nouveau span contenant le nouveau nombre */ for (var i=0;i<spanElements.length;i++){ var classSpan = spanElements[i].className; if (classSpan == "leNombre"){ /* on test pour trouver le bon span */ spanElements[i].replaceChild(newSpan.cloneNode(false),spanElements[i].firstChild); /* et là on remplace le firstChild (le texte) de spanElements[i] ( le span contenant l'ancien nombre ) par un clone de newSpan (celui créer juste au dessus contenant le nouveau nombre */ } } } </script> voici maintenant incrementation.php : <?php header("Content-type: text/javascript"); $nombre=$bdd->query('SELECT nombre FROM nombre'); $nombre=$nombre->fetch(); $newNombre=$nombre['nombre']+1; //on récupère le nombre $nombre->closecursor(); $upNbr=$bdd->prepare('UPDATE nombre SET nombre = :newNombre'); $upNbr->execute(array('newNombre'=>$newNombre)); $upNbr->closecursor(); // on l'incrémente ?> refreshNombre(<?php echo $newNombre ?>); /* on execute enfin la dernière fonction de index.php qui va se charger de rafraichir le nombre sur la page, il n'y à eu aucun reload de la part du navigateur ! */ Si les commentaires ne sont pas assez explicatifs dites-le moi ! je me ferais un plaisir de détailler tout ça ! Bien, si vous avez compris l'idée de l'appel d'une page externe via JS pour exécuter un code php sans reload de page, vous avez tout compris. Mais pour exploiter pleinement la puissance du DSL et de la BDD, il nous faudrait avoir plusieurs bouton et nombres dynamiques. Pour cela il suffirait d'envoyer au script incrementation.php une id afin de transformer la requête SQL en : $upNbr=$bdd->prepare('UPDATE nombre SET nombre = :newNombre' WHERE id= :id); $upNbr->execute(array('newNombre'=>$newNombre, 'id'=>$_GET['id'])); $upNbr->closecursor(); et on change la fonction refresh pour qu'elle contienne un paramètre en plus : l'id function refreshNombre(id,newNombre){ var spanElements = document.getElementsByTagName('span'); var newSpan = document.createTextNode(' ' + newNombre + ' '); for (var i=0;i<spanElements.length;i++){ var classSpan = spanElements[i].className; var idSpan = classSpan.substring(classSpan.lastIndexOf('a')+1); if (idSpan == id){ spanElements[i].replaceChild(newNombre.cloneNode(false),spanElements[i].firstChild); } } } avec son appel : refreshNombre(<?php echo $_GET['id']; ?>,<?php echo $newNombre; ?>); Avez-vous vu la subtilité du : var idSpan = classSpan.substring(classSpan.lastIndexOf('a')+1); ? En fait, en HTML il est impossible de mettre un nom de class commençant par un chiffre... du coup, on met un "a" devant et on utilise "substring" pour découper ce "a" on prend la dernière apparition de "a" et on ajoute 1 au rang, il ne nous reste plus que l'id ! celui-ci est donc afficher sur index.php comme ceci : <span class="a<?php echo $nombre['id'];?>"> <?php echo $nombre['nombre']; ?> </span> bien sûr la requere SQL change légèrement : SELECT * FROM nombre Voilà voilà ! DSL dans toute sa grandeur ! Si vous avez des questions n'hésitez pas !1 point
-
Comme d'habitude j'ai regardé l'actu YouTube de mes abonnés et je suis tombé sur une vidéo de smosh games Qui présente le nouveau jeu du créateur de flappy bird "Swing Copters". À mon avis il aura moins de succès mais par contre à ce que j'ai pu voir sur la vidéo il fait assez rager. Le jeu est disponible sur tous les OS mais pour WP ce n'est pas l'officiel ... j'actualiserai le topic si jamais il arrive sur le store. -> Dispo ici (Android) -> iOS -> Windows Phone1 point
-
1 point
-
1 point
-
Et le metal qui couvre tous les stéréotypes (gueule tout le temps, on comprends rien, sataniste, se sacrifient sur scène, suicidaires, associaux, etc.) c'est le clairement Black Metal, pas le Hardcore ^^ pour exemple, va chercher un peu des histoires par rapport a Dead, le chanteur de Mayhem, Euronymous le guitariste du même groupe, ou Varg vikernes de Burzum... tu verras c'est morbide ! et pour akimace, ou le metal décrit le Heavy Metal, mais quand on parle de heavy Metal, on parle des groupes que je t'ai cités, entre autres les premiers groupes de metal metal progressif pareil que le metal basique ? Tel un puriste (si ironbatz était là il me soutiendrait), je vais te résumer le prog : Des mesures en 7/8, 11/16, 6/4, ou même 31/32 en permanence, on passe d'un 4/4 à une mesure totalement asymétrique L'utilisation de TOUS LES TRUC possibles et imaginables en harmonie Des morceaux de 10min environ Des solos à n'en plus finir Et des parties guitares/basse/batterie/claviers injouables en dessous de 20 ans de pratique ^^ Et pour le death, n'ont ça n'est pas vraiment proche du hardcore : le death est plus agressif et plus technique. (Désolé hein, mais le metal c'est ma vie alors je veux que tout soit clair ^^)1 point
-
Quelle honte... Ils commettent des crimes au nom d'une religion qu'ils n'ont jamais pratiqués, et les musulmans en paient les conséquences. C'est dramatique de voir des jeunes se faire manipuler au point de devenir si dangereux et pathétique... Je précise que je ne veux pas de cette vidéo sur Melinyel.1 point
-
Le deep web, c'est le marché noir d'Internet, l'allée des embrumes (dans Harry Potter)... C'est en effet un endroit qu'on ne fréquente pas "par hasard", et d'ailleurs il est pas super bien fréquenté ! xD En général quand tu vas là dedans, c'est pour chercher un truc que tu ne pourrais pas trouver sur le web (du genre des snuffs, vidéos absolument barbares et... bon soit cherchez pas à en voir, ça sert à rien) Puis franchement, y aller c'est pas ce qu'il y a de plus rapide, puis en plus tu te perds très vite là-dedans ^^' J'y vais plutôt souvent, et je ne sais jamais ce que je cherche avant d'y aller, je fais ça à l'instinct, au feeling... En tout cas c'est pas ce que je recommande le plus1 point
-
C'est une technique simple et efficace. Mais ce n'est pas de l'AJAX. Simplement une manière d'utiliser le JavaScript et le PHP pour dynamiser un contenu. L'AJAX est une technologie propre qui se base sur l'utilisation de XMLHttpRequest, c'est l'ouverture dédiée d'une connexion HTTP avec une requête qui peut être traité comme telle côté serveur. Ici, on modifie le DOM ce qui génère artificiellement une requête GET. Rien de mauvais la-dedans, beaucoup de bibliothèques asynchrones s'initialisent pas ce procédé, mais il faut juste faire attention à ce que l'on va faire. Et ce pour une raison bien simple : côté serveur, rien ne pourra a priori pas différencier un appel GET simple vers incrementation.php d'un appel GET généré via la page. Alors qu'un appel AJAX à une signature propre au niveau du protocole qui permet de contrôler ses appels et ce sans compté qu'on est maître des headers de la requête en AJAX. Voilà pour mon avis, c'est pratique pour faire des petites choses, mais à évité dès qu'on touche à de la sécurité ou du contrôle des données.1 point
-
Non, le deepweb ne représente pas 90% d'internet, c'est même l'inverse. Les infrastructures du deepweb sont très complexes et couteuses, tout le monde ne peut pas se permettre ça. Ce qui est vrai, c'est que 90% des choses les plus dingues d'internet sont sur le deepweb. Regardez rien que le réseau d'OVH, qui ont une capacité tellement puissante en terme de bande passante qu'ils peuvent protéger leur clients de DDoS allant à 1 téraoctet par SECONDE : ce sont des infrastructures pas nécessairement implantées dans le deepweb. Un guide sur Tor et le deepweb vous intéresserait-il ?1 point
-
Bonjour à tous, Vu que j'ai remarqué que dans mes derniers tuto j'utilisais pas mal de regex j'ai décidé d'en faire un topic plus approfondit. Qu'est-ce que veux dire regex d'abord? tout simplement "REGular EXpression" ou "Expression régulière" (expreg) en français si vous n'avez pas compris. Et si vous ne savez pas ce que c'est une expression régulière cela explique le fait que vous lissez ce topic Bref en d'autres termes une expression régulière, aussi appelé "motif de recherche", est la structure que l'on donne à une chaîne de caractère et qui est beaucoup utilisé en programmation (exemple: vérifier lors qu'une inscription la structure d'un email) enfin je ne vois pas d'autres domaines où cela pourrait-être utilisé ._. Petite notion à savoir: un caractère en majuscule n'est pas le même en minuscule (a=/=A), un espace est aussi un caractère, un caractère peut-être inexistant(NULL) selon le contexte de l'utilisation il peut donc être représenté par un espace ou ne pas être mit, les caractères alphanumériques sont les caractères de base de a à z et de 0 à 9 (majuscule et minuscules inclussent). Vous allons constituer le regex à l'aide de divers symbole: - () : groupement, utilisé pour récupération de la donnée le plus souvent Exemple: pas d'idée sans spoil la suite - [] : groupe de caractères possible Exemple: les caractères possibles sont a, b et/ou c : [abc] - [^] : Tout les caractères sauf... Exemple: ne peut pas commencer par un 0: ^[^0] - ^ : l'expression commence par ... Exemple: ligne qui commence par "meli": ^meli - $ : l'expression termine par ... Exemple: ligne qui termine par "es": es$ - - : tout les caractères compris entre Exemple: Tout les caractères de a à z: [a-z] - {} : répétition du caractère Exemple: Il faut entre 2 et 5 caractère de a à z: [a-z]{2,5} - * : répétition du nombre du caractère entre 0 à l'infini Exemple: les caractères a, b et c peuvent être présent: [abc]* - + : répétition au moins une fois Exemple: les caractères a, b ou c doit être présent au mains une fois: [abc]+ - . : n'importe quel caractère Exemple: n'importe quel caractère qui doit-être entre d et b: d.b - ? : le caractère avant est optionnel Exemple: le s à la fin de patates n'est pas obligatoire: patates? - \ : quand vous voulez utiliser un caractère qui est un symbole de regex pour le "désactiver" Exemple: n'importe quel caractère au moins répété au moins une fois entre des parenthèses: \(.+\) - (|) : différente possibilité possible Exemple: différentes terminaison possible mais ça commence par meli: ^meli(chat|shout|télécommunicateur) Bon après il y a les variantes en programmation pour exemple pour rendre insensible à la cas (ne pas faire la différence entre la majuscule et minuscule): en php on met un # puis des paramètres dont "i" dans ce cas: (exemple|example)#i dans un htaccess c'est au début toujours avec un "i" (?i)(exemple|example) Je vais encore vous donner quelques exemples pour essayer de mieux vous faire synthétiser, on va travailler en contexte car j'ai faire des contextes:-premier contexte un système d'inscription: # vérification que le nom d'utilisateur ne contient que des caractères alphanumérique minimum un caractère: ^[a-zA-Z0-9]+$ # vérification d'une adresse email: ^[a-zA-Z0-9.]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$ # d'après la norme RFC machin le regex correct est extrêmement long et moche - deuxième dans un htaccess je "capte" le chiffe entré dans dans l'url (qui servira par la suite à générer une image: # on cherche un chiffre qui est présent au moins une fois est qui peut contenir un point, le point était la virgule d'un chiffre en programmation ^image\-([0-9]+|[0-9]+\.[0-9]+)\.png$ comme vous le voyez j'ai mis plusieurs possibilités (2) qui sont séparées par une | j'ai mis un \ devant les caractères qui on une symbolique en regex, et donc si j'entre /image-073.png cela retournera 073 et si j'entre /image-0.73.png cela retournera 0.73 il existe encore quelques trucs: - \d : remplace [0-9] c'est le d pour décimal mais je ne sais plus si ça prend les points en compte (normalement non) - \n : nouvelle ligne en php: - [[:alnum:]]+ : il y en a plein de ce type que je n'ai jamais utilisé, mais je pense dans ce cas-ci ça vérifie si c'est une numérique donc la syntaxe est assez large ._. je pense avoir tout globalement tout dit, si vous avez besoin aide vous n'avez cas répondre au sujet Site assez sympa: expreg.com1 point
-
1 point
-
1 point
