{"id":230142,"date":"2022-12-03T19:39:00","date_gmt":"2022-12-03T16:39:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230142"},"modified":"2022-11-09T20:17:17","modified_gmt":"2022-11-09T17:17:17","slug":"jagage-stringid-ja-taeisarvud-php-s","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/jagage-stringid-ja-taeisarvud-php-s\/","title":{"rendered":"Jagage stringid ja t\u00e4isarvud PHP-s"},"content":{"rendered":"<p>Stringide, numbrite ja regulaaravaldistega t\u00f6\u00f6tamine PHP-s on suhteliselt lihtne, arvestades keele pakutavate funktsioonide suurt hulka.<\/p>\n<p>Siiski on aegu, kus teatud kriteeriumide alusel jaotamine ei pruugi olla kohe selge v\u00f5i v\u00f5ib olla selge, mida peate tegema, kuid mitte, kuidas seda k\u00f5ige paremini teha.<\/p>\n<p>Foto: Ag\u00ea Barros saidil Unsplash<\/p>\n<p>Oletame n\u00e4iteks, et teil on string, mis on segatud nii numbrite kui ka numbritega. Selle postituse jaoks oletame, et antud string:<\/p>\n<ul>\n<li>sisaldab tunde ja minuteid,<\/li>\n<li>kui minutid on 60,<\/li>\n<li>string peaks suurendama tundide v\u00e4\u00e4rtust \u00fche v\u00f5rra<\/li>\n<li>minutite v\u00e4\u00e4rtus nullitakse.<\/li>\n<\/ul>\n<p>Probleemse stringi n\u00e4ide v\u00f5ib seega olla kujul T3H60M. Kuidas saaksime stringi stringideks ja t\u00e4isarvudeks jagada ning selle \u00f5igesti \u00fcmber ehitada?<\/p>\n<p>Antud juhul on kolm asja, mis mulle kasulikuks osutuvad. Mitte mingis kindlas j\u00e4rjekorras:<\/p>\n<ul>\n<li>regulaaravaldis<\/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\">massiivi_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\">massiivi_v\u00e4\u00e4rtused<\/a><\/li>\n<\/ul>\n<p>Ja k\u00f5igi \u00fclaltoodud toimingute j\u00e4rjekord on umbes selline:<\/p>\n<ol>\n<li>kasutage stringi k\u00f5igi numbrite leidmiseks regulaaravaldist,<\/li>\n<li>eemaldage massiivist k\u00f5ik peale numbrite<\/li>\n<li>kui teine \u200b\u200bnumber on 60, siis m\u00e4\u00e4ra see v\u00f5rdseks nulliga<\/li>\n<li>suurendage massiivi esimest indeksit \u00fche v\u00f5rra<\/li>\n<li>string uuesti \u00fcles ehitama.<\/li>\n<\/ol>\n<p>Kui \u00fclaltoodud sammud teisendataks koodiks, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12#file-00-format-time-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00f5ib see v\u00e4lja n\u00e4ha j\u00e4rgmine:<\/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>Pange t\u00e4hele, et <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">valin<\/a> dubleerivate v\u00e4\u00e4rtuste eemaldamiseks kasutada massiivi_filtrit ja massiivi_v\u00e4\u00e4rtuste kasutamist <a href=\"https:\/\/gist.github.com\/tommcfarlin\/4458820d452c5d144dc26fc6f6b5ac12\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">,<\/a> et puhastada massiiv kaheks kirjeks, millest esimene on tund ja teine \u200b\u200bminut.<\/p>\n<p>P\u00e4rast seda m\u00e4\u00e4ran iga massiivi indeksi v\u00e4\u00e4rtuse (ja pidage meeles, et need on stringid, nii et peate nende v\u00e4\u00e4rtuse \u00f5igeks suurendamiseks esitama need t\u00e4isarvudena.<\/p>\n<p>L\u00f5puks ehitan stringi vastavalt vajadusele (ja vajadusel).<\/p>\n<p>Muidugi, see on natuke ni\u0161i juhtum, kuid lahendust saab teie enda vajadustest l\u00e4htuvalt \u00fcldistada.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Preg_split ja m\u00f5ne natiivse PHP-funktsiooni kasutamine PHP-s stringide ja t\u00e4isarvude h\u00f5lpsaks jagamiseks regulaaravaldiste abil.<\/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":[718,894,842,802],"tags":[1165],"class_list":["post-230142","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=230142"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230142\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/163201"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}