[{"ID":"320EF327-3248-4E22-9E68-4DE3B973CAED","title":"unEntitizeAccents - passer des codes HTML de lettres accentu\u00e9es aux lettres accentu\u00e9es","tags":"php fonctions texte","date":"18\/02\/2026","timestamp":"1771423807","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"function unEntitizeAccents($str){\r\n\t$str=str_replace('&amp', '&', $str);\r\n\t$accents = [\r\n\t    '\u00e9' => '&eacute',\r\n\t    '\u00e8' => '&egrave',\r\n\t    '\u00ea' => '&ecirc',\r\n\t    '\u00eb' => '&euml',\r\n\t    '\u00e0' => '&agrave',\r\n\t    '\u00e2' => '&acirc',\r\n\t    '\u00e4' => '&auml',\r\n\t    '\u00ee' => '&icirc',\r\n\t    '\u00ef' => '&iuml',\r\n\t    '\u00f4' => '&ocirc',\r\n\t    '\u00f6' => '&ouml',\r\n\t    '\u00f9' => '&ugrave',\r\n\t    '\u00fb' => '&ucirc',\r\n\t    '\u00fc' => '&uuml',\r\n\t    '\u00e7' => '&ccedil',\r\n\t    '\u0153' => '&oelig',\r\n\t    '\u20ac' => '&euro',\r\n\t    '\u00b5' => '&micro',\r\n\t    '\u00e1' => '&aacute',\r\n\t    '\u00e9' => '&eacute',\r\n\t    '\u00ed' => '&iacute',\r\n\t    '\u00f3' => '&oacute',\r\n\t    '\u00fa' => '&uacute',\r\n\t    '\u00f1' => '&ntilde',\r\n\t    '\u00bf' => '&iquest',\r\n\t    '\u00a1' => '&iexcl',\r\n\t    '\u00c9' => '&Eacute',\r\n\t    '\u00c8' => '&Egrave',\r\n\t    '\u00ca' => '&Ecirc',\r\n\t    '\u00cb' => '&Euml',\r\n\t    '\u00c0' => '&Agrave',\r\n\t    '\u00c2' => '&Acirc',\r\n\t    '\u00c4' => '&Auml',\r\n\t    '\u00ce' => '&Icirc',\r\n\t    '\u00cf' => '&Iuml',\r\n\t    '\u00d4' => '&Ocirc',\r\n\t    '\u00d6' => '&Ouml',\r\n\t    '\u00d9' => '&Ugrave',\r\n\t    '\u00db' => '&Ucirc',\r\n\t    '\u00dc' => '&Uuml',\r\n\t    '\u00c7' => '&Ccedil',\r\n\t    '\u0152' => '&OElig',\r\n\t    '\u00c1' => '&Aacute',\r\n\t    '\u00c9' => '&Eacute',\r\n\t    '\u00cd' => '&Iacute',\r\n\t    '\u00d3' => '&Oacute',\r\n\t    '\u00da' => '&Uacute',\r\n\t    '\u00d1' => '&Ntilde',\r\n\t];\r\n\tforeach ($accents as $key => $value) {\r\n\t\tstr_replace([$value.';',$value],$key,$str);\r\n\t}\r\n\r\n\treturn $str;\r\n}"},{"ID":"120F4955-C23B-444C-8DFA-B7487D5EF6D7","title":"unicode2entity - convertir les caracteres unicode (m\u00eame multiples) en leut codepoint","tags":"php fonctions","date":"15\/02\/2026","timestamp":"1771161404","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"function unicode2entity($car){\r\n\t\t$code='';\r\n\t\t$l=mb_strlen($car);\r\n\t\tfor ($i=0;$i<$l;$i++){\r\n\t\t\t$current_car=mb_substr($car, $i,1);\r\n\t\t\t$code.=sprintf(\"&#x%04X;\", mb_ord($current_car,'UTF-8'));\r\n\t\t}\r\n\t\treturn $code;\r\n\t}"},{"ID":"1EAF84DE-0F18-4374-8C02-5AFEB862B34D","title":"Styler les input radio sans framework","tags":"astuce css html","date":"23\/01\/2026","timestamp":"1769158978","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/warriordudimanche.net\/core\/admin\/article.php?a2178","content":"input[type=\"radio\"] {\r\n  \/* Disable the browser's default radio button styles *\/\r\n  appearance: none;\r\n  margin: 0;\r\n\r\n  \/* Recreate the circle container *\/\r\n  border: 1px solid black;\r\n  background: white;\r\n  border-radius: 50%;\r\n\r\n  \/* Center our dot in the container *\/\r\n  display: inline-grid;\r\n  place-content: center;\r\n\r\n  \/* Use a pseudo-element to display our \"dot\" *\/\r\n  &::before {\r\n    content: \"\";\r\n    width: 0.75rem;\r\n    height: 0.75rem;\r\n    border-radius: 50%;\r\n  }\r\n\r\n  \/* And display it when the radio button is checked *\/\r\n  &:checked::before {\r\n    background: black;\r\n  }\r\n}"},{"ID":"83F8D9DB-0EA3-403F-ABC9-0D476AD3E085","title":"animation d&#39apparition sans keyframes starting-style","tags":"astuce css","date":"19\/12\/2025","timestamp":"1766149825","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/lyra.horse\/blog\/2025\/08\/you-dont-need-js\/","content":".toast {\r\n  transition: opacity 1s, translate 1s;\r\n  opacity: 1;\r\n  translate: 0 0;\r\n  @starting-style {\r\n    opacity: 0;\r\n    translate: 0 10px;\r\n  }\r\n}"},{"ID":"C24DE3E3-6D51-478F-9399-7A9234018F25","title":"Modifier une couleur de base en CSS","tags":"css","date":"19\/12\/2025","timestamp":"1766149069","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"\r\n*{\r\n    --base-color:red;\r\n}\r\n\r\n\/*Ajouter de la transparence*\/\r\n.transparent{\r\n    hsl(from var(--base-color) h s calc(l + 12));\r\n}\r\n\r\n\/* d\u00e9saturer une couleur de base*\/\r\n.desat{\r\n    color: hsl(from var(--base-color) h calc(s + -50) l);\r\n}\r\n\r\n\/* compl\u00e9mentaire*\/\r\n.complementaire{\r\n    hsl(from var(--base-color) calc(h + 180) s l);\r\n}\r\n\r\n\/* plus loin : primary, seconday, tertiary*\/\r\n.primary{\r\n    hsl(from var(--base-color) calc(h + 90) s l);\r\n}\r\n.secondary{\r\n    hsl(from var(--base-color) calc(h + 180) s l);\r\n}\r\n.tertiary{\r\n    hsl(from var(--base-color) calc(h + 270) s l);\r\n}\r\n\r\n\r\n"},{"ID":"DEC237B0-6AB9-4DFE-B9E5-EBE03D0A0BE9","title":"Centrer verticalement 2024 (sans flex\/grid)","tags":"astuce css","date":"19\/12\/2025","timestamp":"1766148302","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"align-content: center; "},{"ID":"0D1406AB-78BF-40DE-A758-28013ADB40A8","title":"filtrer les caract\u00e9res interdits pour un fichier","tags":"astuce fonctions javascript vanilla","date":"28\/11\/2025","timestamp":"1764324086","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"VanillaJS","source":"","content":"\/\/ filtre tous les inputs ayant l'attribut alphanum-only\r\n\r\n\ton(\"input\",\"[alphanum-only]\",function(e){\r\n\t\tlet obj=e.target;\r\n\t\tlet cursor_position=obj.selectionStart;\r\n\t\tobj.value=obj.value.replace(new RegExp(\/[^a-zA-z0-9\\-_ ]\/g), \"\");\r\n\t\tobj.selectionStart=cursor_position;\r\n\t\tobj.selectionEnd=cursor_position;\r\n\t});"},{"ID":"DEFBB1D3-03BC-4A96-92F6-C1C68D09E810","title":"c\u00e9sure automatique de texte anti d\u00e9bordement","tags":"astuce css texte","date":"03\/11\/2025","timestamp":"1762189424","rss_date":"Tue, 11 Mar 2025 17:03:44 +0100","status":"public","dependency":"","source":"","content":"text-overflow: ellipsis;\r\nwhite-space: nowrap;"},{"ID":"47617EAB-9540-4D8B-9AED-2FE9FFB251E7","title":"d\u00e9clencher un download de donn\u00e9es en js","tags":"javascript","date":"16\/08\/2025","timestamp":"1755344992","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/www.alsacreations.com\/astuce\/lire\/1958-Declencher-un-telechargement-de-fichier.html","content":"\/\/ Objet JavaScript brut\r\nconst obj = { recette: 'R\u00f4ti au kiwi', duree: 120, ingredients: 3 };\r\n\r\n\/\/ Donn\u00e9es \u00e0 exporter converties en cha\u00eene de texte\r\nconst data = JSON.stringify(obj);\r\n\r\n\/\/ Cr\u00e9e un blob \u00e0 partir des donn\u00e9es\r\nconst blob = new Blob([data], { type: 'application\/json' });\r\n\r\n\/\/ G\u00e9n\u00e8re une URL temporaire\r\nconst url = window.URL.createObjectURL(blob);\r\n\r\n\/\/ Cr\u00e9e un lien et d\u00e9clenche le t\u00e9l\u00e9chargement\r\nconst link = document.createElement('a');\r\nlink.href = url;\r\nlink.download = 'data.json';\r\ndocument.body.appendChild(link);\r\nlink.click();\r\ndocument.body.removeChild(link);\r\n\r\n\/\/ Lib\u00e8re l\u2019URL temporaire et la m\u00e9moire \ud83e\uddf9\r\nwindow.URL.revokeObjectURL(url);"},{"ID":"A3601CD6-DFC3-45CA-9452-48617703FF59","title":"\u00e9largir la zone cliquable d&#39un bouton de mani\u00e8re invisible","tags":"astuce css","date":"06\/08\/2025","timestamp":"1754483889","rss_date":"Sun, 08 Jun 2025 12:38:09 +0200","status":"public","dependency":"","source":"https:\/\/links.kalvn.net\/shaare\/Q70Ulw","content":"button::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: -5px;\r\n}\r\n\r\n"},{"ID":"FC235417-ECC8-4F01-AEF2-76843A07F6A5","title":"Crop d&#39images par lot","tags":"graphisme conversion","date":"19\/06\/2025","timestamp":"1750362959","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/blog.dorian-depriester.fr\/linux\/le-traitement-dimages-par-lot-sous-linux","content":"sudo apt install graphicsmagick-imagemagick-compat\r\n\r\nmogrify -crop 2420x1700+670+100 *.png "},{"ID":"E7929E86-EC2A-4066-BE14-65A4AFECA125","title":"IP du client (avec proxy)","tags":"php fonctions","date":"06\/05\/2025","timestamp":"1746540576","rss_date":"Thu, 05 Jun 2025 16:09:36 +0200","status":"public","dependency":"","source":"","content":"function get_remote_ip(){\r\n\t$ip=!empty($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:false;\r\n\t$ip=!empty($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$ip; # throug proxy ?\r\n\treturn $ip;\r\n}"},{"ID":"84A04BB6-217C-4474-A2EC-6C74A979092D","title":"D\u00e9clencher une animation via JS","tags":"css javascript","date":"26\/01\/2025","timestamp":"1737886296","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/API\/Element\/animate","content":"document.getElementById(\"tunnel\").animate(\r\n  [\r\n    \/\/ \u00e9tapes\/keyframes\r\n    { transform: \"translateY(0px)\" },\r\n    { transform: \"translateY(-300px)\" },\r\n  ],\r\n  {\r\n    \/\/ temporisation\r\n    duration: 1000,\r\n    iterations: Infinity,\r\n  },\r\n);"},{"ID":"77FC53B2-F317-49DD-A8C5-68B0942388B4","title":"Lazy loading en une ligne, pur CSS","tags":"astuce css","date":"26\/01\/2025","timestamp":"1737886246","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/links.kalvn.net\/shaare\/fUwLcQ","content":"content-visibility:auto; "},{"ID":"95D26CC9-6E66-4260-BA01-24F8A3818FF5","title":"Toggle la visibilit\u00e9 d&#39un \u00e9l\u00e9ment simplement","tags":"astuce javascript css","date":"26\/01\/2025","timestamp":"1737885752","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"https:\/\/lehollandaisvolant.net\/?id=20250125165124","content":"button.addEventListener('click', function(){\r\n    element.hidden = !element.hidden;\r\n});\r\n\r\nou en VanillaJS\r\n\r\non(\"click\",\"button\",function(){\r\n    element.hidden = !element.hidden;\r\n});"},{"ID":"98E89DF1-0347-4126-BC2A-EFFE3DA311E8","title":"recharger les img qui ont \u00e9choue","tags":"astuce fonctions javascript","date":"19\/11\/2024","timestamp":"1732030787","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"helium","source":"","content":"\r\n<script>\r\non(\"error\",\"img\",function(e){\r\nlet img=e.target;\r\nlet src=img.src;\r\nimg.src=\"\";\r\nimg.src=src;\r\n});\r\n<\/script>"},{"ID":"4A597BE5-A628-4B0F-AD90-C8B7A7CC0118","title":"Comment detecter la touche majuscule en Javascript","tags":"javascript","date":"05\/11\/2024","timestamp":"1730825702","rss_date":"Sat, 11 May 2024 17:55:02 +0200","status":"public","dependency":"","source":"https:\/\/blog.shevarezo.fr\/post\/2024\/07\/11\/javascript-comment-detecter-majuscule","content":"const capsLockOn = keyboardEvent.getModifierState('CapsLock');"},{"ID":"4C09BF1B-3D7D-4727-BD50-E382435E6702","title":"sauvegarder un node en html ","tags":"javascript","date":"25\/09\/2024","timestamp":"1727276950","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"VanillaJS","source":"","content":"var doc=first('#node').innerHTML;\r\nvar name=\"filename.html\";   \r\nvar myFile = new Blob([doc], {type: 'text\/plain'});\t\t\r\n\t\t\r\nwindow.URL = window.URL || window.webkitURL;\r\nvar a= create('a',{href:window.URL.createObjectURL(myFile),download:name});\r\na.click();"},{"ID":"13217AA0-85B3-4BB5-9CBA-8EAB54C5CEF7","title":"footer en bas de page en deux lignes","tags":"astuce css","date":"04\/06\/2024","timestamp":"1717501513","rss_date":"Sat, 06 Apr 2024 13:45:13 +0200","status":"public","dependency":"","source":"","content":"body{\r\n\tdisplay:grid;\r\n\tgrid-template-rows: auto 1fr auto;\r\n}\r\navec une structure HTML:\r\n\r\n<body>\r\n    <header><\/header>\r\n    <main><\/main>\r\n    <footer><\/footer>\r\n<\/body>"},{"ID":"B87C77B0-1A8F-4A73-BD99-9AF7AEEDD030","title":"Centrer verticalement","tags":"astuce css","date":"28\/05\/2024","timestamp":"1716871313","rss_date":"Thu, 01 Jan 1970 010000 +0100","status":"public","dependency":"","source":"https:\/\/tonsky.me\/blog\/centering\/","content":"display: flex;\r\njustify-content: center; \/* Horizontal centering *\/\r\nalign-items: center; \/* Vertical centering *\/\r\n\r\nou\r\n\r\ndisplay: grid;\r\njustify-items: center; \/* Horizontal centering *\/\r\nalign-items: center; \/* Vertical centering *\/"},{"ID":"74F25AA5-8EA8-4216-80B1-F7B25C8F0BBE","title":"Ajouter simplement une confirmation \u00e0 un lien","tags":"javascript html","date":"26\/05\/2024","timestamp":"1716736325","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"<a href=\"lien\" confirm=\"\u00cates-vous s\u00fbr ?\">Action \u00e0 confirmer<\/a>\r\n\r\non(\"click\",\"a[confirm]\",function(e){\r\n\tmsg=attr(e.target,\"confirm\");\r\n\tif(!msg){msg=\"Veuillez confirmer\";}\r\n\tif (!confirm(msg)){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n})"},{"ID":"78411CD3-E803-4F6C-AAC4-1B6A00ED179D","title":"Closure avec variable du scope exterieur","tags":"php astuce","date":"01\/05\/2024","timestamp":"1714558865","rss_date":"Fri, 05 Jan 2024 12:21:05 +0100","status":"public","dependency":"","source":"","content":"$closure=function ($arg1,$arg2) use ($var_exterieure){\r\n    #come on, do something\r\n};"},{"ID":"BDE7DC1E-F5DA-4FB9-BF2F-60C665FC1B1E","title":"emp\u00eacher l&#39ex\u00e9cution de php dans un dossier","tags":"php astuce dothtaccess","date":"29\/04\/2024","timestamp":"1714393555","rss_date":"Thu, 01 Jan 1970 010000 +0100","status":"public","dependency":"","source":"","content":"<FilesMatch \"\\.php *$\">\r\n     Order allow,deny\r\n    Deny from all\r\n<\/FilesMatch>"},{"ID":"EA5AA0D7-FB4C-48FE-9A65-94F9D43024B1","title":"Terminal d\u00e9marrer un serveur PHP dans un dossier  sp\u00e9cifique","tags":"php astuce bash","date":"17\/04\/2024","timestamp":"1713362094","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"php -S 0.0.0.0:5555 -t \"\/path\/to\/folder\"\r\n"},{"ID":"A7130E5A-C84C-463F-86AB-D5CD902E09B3","title":"firstCap()","tags":"php","date":"05\/04\/2024","timestamp":"1712318637","rss_date":"Sat, 04 May 2024 14:03:57 +0200","status":"public","dependency":"","source":"","content":"\tfunction firstCap($str){\r\n\t\t$str=str_replace('_',' ', $str);\r\n\t\t$str=ucwords($str);\r\n\t\t$str=str_replace(' ','',$str);\r\n\t\treturn $str;\r\n\t}"},{"ID":"D49F26C7-C511-4262-B8B2-52C3E846E402","title":"labels input flottants CSS pur","tags":"astuce css html graphisme","date":"17\/03\/2024","timestamp":"1710680913","rss_date":"Thu, 01 Jan 1970 010000 +0100","status":"public","dependency":"","source":"","content":"\/\/ HTML\r\n<body>\r\n\t<form>\r\n\t\t<h1>Please login<\/h1>\r\n\t\t<label><span>Username<\/span>\r\n\t\t\t<input type=\"text\" name=\"login\" value=\"\" placeholder=\" \" >\r\n\t\t<\/label>\r\n\t\t<label><span>Password<\/span>\r\n\t\t\t<input type=\"password\" name=\"pswd\" value=\"\" placeholder=\" \">\r\n\t\t<\/label>\r\n\r\n\t\t<input type=\"submit\" value=\"Ok\">\r\n\t\t<hr>\r\n\t\t<h4>or <a href=\"\">subscribe<\/a><\/h4>\r\n\t<\/form>\r\n\r\n<\/body>\r\n\r\n\/\/ CSS\r\nbody{\r\n\theight: 100%;\r\n\tmax-height: 100%;\r\n}\r\nform{\r\n\tmax-width:320px;\r\n\tmargin:auto;\r\n\tborder:1px solid rgba(0,0,0,0.2);\r\n\tborder-radius: 0.5em;\r\n\tpadding:0.5em;\r\n\tbackground:var(--color);\r\n\t\r\n\tposition : relative;\r\n    top: 50%;\r\n    transform: translateY(-50%);\r\n\r\n}\r\nlabel{\r\n\tdisplay: block;\r\n\tmargin-top:1em;\r\n}\r\ninput{\r\n\toutline: 0;\r\n\tdisplay: block;\r\n\twidth:100%;\r\n\tborder-radius: 0.5em;\r\n\tborder:1px solid rgba(0,0,0,0.2);\r\n\tmargin-top:0.5em;\r\n}\r\n\r\ninput[name=\"login\"]{\r\n\tpadding:0.5em;\r\n\tpadding-left:24px;\r\n\tbackground: url(http:\/\/api.warriordudimanche.net\/iconeleon\/?i=fontawesome%20solid\/circle-user.svg&c=black) no-repeat 4px center;\r\n\tbackground-size: 16px 16px;\r\n}\r\ninput[type=\"password\"]{\r\n\tpadding:0.5em;\r\n\tpadding-left:24px;\r\n\tbackground: url(http:\/\/api.warriordudimanche.net\/iconeleon\/?i=elusive\/unlock-alt.svg&c=black) no-repeat 4px center;\r\n\tbackground-size: 16px 16px;\r\n}\r\n\r\nlabel span{\r\n\tposition: relative;\r\n\ttop:2em;\r\n\tleft:24px;\r\n\ttransition:all 500ms;\r\n}\r\nlabel:has(input:placeholder-shown) span{\r\n\tposition: relative;\r\n\ttop:2em;\r\n\tleft:24px;\r\n\ttransition:all 500ms;\r\n}\r\n\r\nlabel:has(input:focus) span,\r\nlabel:has(input:not(:placeholder-shown)) span\r\n{\r\n\tcolor:blue;\r\n\ttop:0;\r\n\tleft:0;\r\n\ttransition:all 500ms;\r\n}\r\n\r\n\r\n"},{"ID":"9D99AE5A-CF05-4E0E-96A0-C56FEC542E70","title":"fonction PHP - servir un fichier avec headers corrects","tags":"php fonctions fichiers","date":"13\/02\/2024","timestamp":"1707809451","rss_date":"Thu, 01 Jan 1970 01:00:00 +0100","status":"public","dependency":"","source":"","content":"function serveFile($path){\r\n\r\n\tif (is_file($path)){\r\n\t\t$mime=mime_content_type($path);\r\n\t\theader('Content-type: '.$mime.'; charset=utf-8');\r\n\t\theader('Content-Transfer-Encoding: binary');\r\n\t\theader('Content-Disposition: filename=\"'.tools::basename($path).'\"');\r\n\t\theader('Content-Length: '.filesize($path));\r\n\t\treadfile($path);\r\n\t\texit;\r\n\t}\r\n        header(\"HTTP\/1.1 404 Not Found\");\r\n        exit('404 - Not Found (\u256f\u00b0\u25a1\u00b0\uff09\u256f\ufe35 \u253b\u2501\u253b');\r\n\r\n}"},{"ID":"641E3D7E-0D15-4B43-AEC6-7BF43CF080EF","title":"folder2array()","tags":"php fichiers","date":"04\/02\/2024","timestamp":"1707062223","rss_date":"Tue, 02 Apr 2024 165703 +0200","status":"public","dependency":"","source":"","content":"function folder2array($path=''){\r\n\t\t\/\/$path=empty($path)?'.\/':$path;\r\n\t\t$array=[];\r\n\t\t$current_dir=glob($path.'\/*');\r\n\t\tif ($current_dir[0]==$path) unset($current_dir[0]);\r\n\t\tforeach ($current_dir as $key => $item) {\r\n\t\t\tif (is_file($item)){\r\n\t\t\t\t$array[]=$item;\r\n\t\t\t}else{\r\n\t\t\t\t$array[]=folder2array($item);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn $array;\r\n\t}"},{"ID":"32D8D531-812F-4194-94B6-0B6EC11CF3FA","title":"poster un blob vers PHP","tags":"javascript","date":"26\/01\/2024","timestamp":"1706282905","rss_date":"Thu, 01 Jan 1970 010000 +0100","status":"public","dependency":"","source":"","content":"\/\/ on utilise un filereader\r\nfunction sendBlob(theBlob){  \r\n  let reader = new FileReader();\r\n  reader.addEventListener(\"loadend\", function () {\r\n    formData = new FormData();\r\n    formData.append(\"blob\", reader.result);\r\n    formData.append(\"path\", destination_folder);\r\n    formData.append(\"token\", token);\r\n    postBlob(formData);\r\n  });\r\n\r\n  reader.readAsDataURL(theBlob);\r\n}\r\n\r\nfunction postBlob(data){\r\n  fetch(\"index.php\", { method: 'POST', body: data })\r\n  .then((response)=>{return response.text()})\r\n  .then((text)=>{\r\n    token=text;\r\n    alert(\"Fichier sauvegard\u00e9.\");\r\n  });\r\n  \r\n}"},{"ID":"8B4025AA-8AB9-40C7-96FE-3BB5B77E5AF5","title":"foreach (data as key=&#62value) en js","tags":"astuce javascript","date":"03\/12\/2023","timestamp":"1701614195","rss_date":"Sun, 12 Mar 2023 15:36:35 +0100","status":"public","dependency":"","source":"https:\/\/12daysofweb.dev\/2022\/formdata-api\/","content":"for (let [key, value] of data) {\r\n    console.log(key);\r\n    console.log(value);\r\n}"}]