{"id":230575,"date":"2022-12-03T19:05:00","date_gmt":"2022-12-03T16:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230575"},"modified":"2022-11-09T23:02:38","modified_gmt":"2022-11-09T20:02:38","slug":"separer-les-chaines-et-les-entiers-en-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/separer-les-chaines-et-les-entiers-en-php\/","title":{"rendered":"S\u00e9parer les cha\u00eenes et les entiers en PHP"},"content":{"rendered":"<p>Travailler avec des cha\u00eenes, des nombres et des expressions r\u00e9guli\u00e8res en PHP est relativement facile compte tenu du grand nombre de fonctions fournies par le langage.<\/p>\n<p>Il y a des moments, cependant, o\u00f9 d\u00e9terminer comment diviser sur certains crit\u00e8res peut ne pas \u00eatre imm\u00e9diatement clair, ou il peut \u00eatre clair ce que vous devez faire mais pas comment le faire au mieux.<\/p>\n<p>Photo par Ag\u00ea Barros sur Unsplash<\/p>\n<p>Par exemple, supposons que vous ayez une cha\u00eene compos\u00e9e \u00e0 la fois de nombres et de chiffres. Pour cet article, disons qu&rsquo;une cha\u00eene donn\u00e9e\u00a0:<\/p>\n<ul>\n<li>inclut les heures et les minutes,<\/li>\n<li>quand les minutes sont \u00e0 60,<\/li>\n<li>la cha\u00eene doit augmenter la valeur des heures d&rsquo;un<\/li>\n<li>la valeur des minutes est remise \u00e0 z\u00e9ro.<\/li>\n<\/ul>\n<p>Un exemple de cha\u00eene probl\u00e9matique peut donc \u00eatre de la forme T3H60M. Comment pouvons-nous alors diviser la cha\u00eene en cha\u00eenes et en entiers et la reconstruire correctement\u00a0?<\/p>\n<p>Dans ce cas, il y a trois choses que j&rsquo;ai trouv\u00e9es utiles. Dans aucun ordre particulier:<\/p>\n<ul>\n<li>une expression r\u00e9guli\u00e8re<\/li>\n<li><a href=\"https:\/\/secure.php.net\/manual\/en\/function.preg-split.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_split<\/a><\/li>\n<li><a href=\"https:\/\/secure.php.net\/manual\/en\/function.array-filter.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_filter<\/a><\/li>\n<li><a href=\"https:\/\/secure.php.net\/manual\/en\/function.array-values.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">valeurs_tableau<\/a><\/li>\n<\/ul>\n<p>Et l&rsquo;ordre dans lequel les op\u00e9rations d&rsquo;utilisation de chacun des \u00e9l\u00e9ments ci-dessus ressemblent \u00e0 ceci\u00a0:<\/p>\n<ol>\n<li>utiliser une expression r\u00e9guli\u00e8re pour trouver tous les chiffres de la cha\u00eene,<\/li>\n<li>supprimer tout sauf les chiffres du tableau<\/li>\n<li>si le deuxi\u00e8me chiffre est 60, alors mettez-le \u00e9gal \u00e0 z\u00e9ro<\/li>\n<li>augmenter le premier indice du tableau de un<\/li>\n<li>reconstruire la cha\u00eene.<\/li>\n<\/ol>\n<p>Si les \u00e9tapes ci-dessus \u00e9taient converties en code, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12#file-00-format-time-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cela pourrait ressembler \u00e0 ceci\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n$totalTimeParts = array_values(\n  array_filter(\n    preg_split(\"\/(&lt;=[0-9])*([a-zA-Z])\/i\", $totalTime)) );\n\nif (isset($totalTimeParts[0]) &amp;&amp; isset($totalTimeParts[1]) &amp;&amp; '60' === $totalTimeParts[1]) {\n  $hours = (int)$totalTimeParts[0] + 1;\n  $minutes = '00';\n  $totalTime = \"P$hours\". 'H'. $minutes. 'M';\n}\n\nreturn $totalTime;<\/code><\/pre>\n<p>Notez que j&rsquo;opte pour utiliser <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_filter<\/a> pour supprimer les valeurs en double et utiliser <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">array_values<\/a> \u200b\u200bpour nettoyer le tableau en seulement deux entr\u00e9es dont la premi\u00e8re est l&rsquo;heure, la seconde est la minute.<\/p>\n<p>Apr\u00e8s cela, je d\u00e9termine la valeur de chacun des index du tableau (et rappelez-vous, ce sont des cha\u00eenes, vous devrez donc les convertir en entiers pour augmenter correctement leur valeur.<\/p>\n<p>Enfin, je construis la cha\u00eene comme (et si) n\u00e9cessaire.<\/p>\n<p>Bien s\u00fbr, c&rsquo;est un peu un cas de niche, mais la solution peut \u00eatre plus g\u00e9n\u00e9ralis\u00e9e en fonction de vos propres besoins.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilisation de preg_split et de quelques fonctions PHP natives pour diviser facilement des cha\u00eenes et des entiers en PHP \u00e0 l&rsquo;aide d&rsquo;expressions r\u00e9guli\u00e8res.<\/p>\n","protected":false},"author":1,"featured_media":163201,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,801,841],"tags":[1167],"class_list":["post-230575","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-php-3","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=230575"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230575\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/163201"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}