{"id":230546,"date":"2022-12-13T15:03:00","date_gmt":"2022-12-13T12:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230546"},"modified":"2022-12-13T15:03:29","modified_gmt":"2022-12-13T12:03:29","slug":"hur-man-enkelt-trunkerar-text-i-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-enkelt-trunkerar-text-i-php\/","title":{"rendered":"Hur man enkelt trunkerar text i PHP"},"content":{"rendered":"\n<p>Om du enbart behandlar WordPress som ett bloggprogram eller, till och med i en mer liberal mening, ett inneh\u00e5llshanteringssystem, \u00e4r du sannolikt van vid att anv\u00e4nda redigeraren eller utdragsf\u00e4ltet f\u00f6r att skriva en teaser och sedan introducera en L\u00e4s mer-l\u00e4nk<strong>.<\/strong><\/p>\n<h3>WordPress f\u00f6r webbapplikationer (igen)<\/h3>\n<p>F\u00f6r de som har l\u00e4st den h\u00e4r sidan ett tag \u00e4r jag specifikt intresserad av att anv\u00e4nda WordPress som en grund f\u00f6r webbapplikationsutveckling (se \u00e4ven <a href=\"https:\/\/tommcfarlin.com\/web-applications-with-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">denna<\/a>, <strong><a href=\"https:\/\/tommcfarlin.com\/wordpress-for-web-application-development\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">denna<\/a><\/strong>, <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">den h\u00e4r<\/a><\/strong> och <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/ett-objektorienterat-saett-att-arbeta-med-modeller-och-webbapplikationer\/\" title=\"den h\u00e4r\">den h\u00e4r<\/a><\/strong> ).<\/p>\n<p>Vid tidpunkten f\u00f6r detta inl\u00e4gg \u00e4r det h\u00e4r en artikel som \u00e4r ungef\u00e4r sex \u00e5r gammal.<\/p>\n<p>S\u00e5 det finns tillf\u00e4llen d\u00e5 inneh\u00e5llet som du ska rendera p\u00e5 front-end kan komma fr\u00e5n en tredjepartsk\u00e4lla.<\/p>\n<h3>Tillbaka till inneh\u00e5llet<\/h3>\n<p>Det vill s\u00e4ga, applikationen fungerar s\u00e5 h\u00e4r:<\/p>\n<ol>\n<li>kontakta ett tredjeparts-API,<\/li>\n<li>importera data fr\u00e5n samtalet och analysera det vid behov,<\/li>\n<li>skriv det till databasen,<\/li>\n<li>\u00e5terge informationen p\u00e5 gr\u00e4nssnittet n\u00e4r det efterfr\u00e5gas.<\/li>\n<\/ol>\n<p>Det finns mycket som kan g\u00e5 mellan vart och ett av stegen ovan, men det viktigaste jag vill dela med mig av i det h\u00e4r inl\u00e4gget \u00e4r ett effektivt s\u00e4tt att enkelt trunkera text med hj\u00e4lp av PHP f\u00f6r att rendera i front-end.<\/p>\n<p>Detta \u00e4r anv\u00e4ndbart f\u00f6r att tillhandah\u00e5lla teasers, l\u00e4nka till tredjepartswebbplatser och mer utan att beh\u00f6va skriva eller redigera inneh\u00e5ll manuellt.<\/p>\n<p>F\u00f6r att ge ett exempel p\u00e5 anv\u00e4ndningsfall f\u00f6r funktionen jag ska dela med mig av \u00e4r det bra att ha n\u00e5gra krav. De \u00e4r godtyckliga f\u00f6r det h\u00e4r inl\u00e4gget men implementeringen b\u00f6r vara tillr\u00e4ckligt konkret f\u00f6r att du kan sl\u00e4ppa detta i inl\u00e4gget utan problem.<\/p>\n<p>L\u00e5t oss anta:<\/p>\n<ul>\n<li>vi h\u00e4mtar text fr\u00e5n ett tredjeparts-API,<\/li>\n<li>data lagras n\u00e5gonstans i databasen,<\/li>\n<li>data \u00e4r ren text (ingen uppm\u00e4rkning eller n\u00e5gon annan typ av webbaserade enheter i strukturen),<\/li>\n<li>vi beh\u00f6ver en funktion som accepterar texten och en l\u00e4ngd f\u00f6r att trunkera texten.<\/li>\n<\/ul>\n<p>Med tanke p\u00e5 dessa krav kan vi st\u00e4lla in en funktion f\u00f6r att acceptera text och en l\u00e4ngd p\u00e5 argument. Om texten \u00e4r mindre \u00e4n eller lika med den angivna l\u00e4ngden finns det inget att g\u00f6ra; annars kan vi trunkera texten till den angivna l\u00e4ngden och l\u00e4gga till efterf\u00f6ljande ellipser.<\/p>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/97c336e3e7246c9d5f6d46684ff1e6e9#file-00-truncate-text-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">H\u00e4r \u00e4r koden:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Truncates the specified text to the specified length to the last whole word and\n * adds ellipses to the end of the truncated string.\n * \n * @param string $text The text to truncate.\n * @param int $length The maximum allowed length of the text.\n * @return string The text if it's less than the length of the specified length or the text truncated to the specified length.\n *\/\npublic function truncate($text, $length)\n{\n    if ($length &gt;= strlen($text)) {\n      return $text;\n    }\n\n  return preg_replace(\n        \"\/^(.{1,$length})(s.*|$)\/s\",\n        '1...',\n        $text\n    );\n}<\/code><\/pre>\n<p>Implementeringar f\u00f6r detta i WordPress-sammanhang kan komma fr\u00e5n att l\u00e4sa data lagrad i anpassade tabeller, i postmetadata, i posttabellen eller i princip p\u00e5 vilken plats som helst d\u00e4r r\u00e5text lagras och du vill rendera den p\u00e5 front-end .<\/p>\n<p>Om det finns annat inneh\u00e5ll i texten som HTML eller andra enheter, kan det beh\u00f6va g\u00f6ras till\u00e4gg. Om det \u00e4r i WordPress s\u00e5 finns det filter och andra former av hantering av den datan innan texten trunkeras, men det \u00e4r bortom po\u00e4ngen att enkelt trunkera text i PHP, eller hur?<\/p>\n<p>S\u00e5, \u00e5tminstone, anv\u00e4nd detta rent f\u00f6r text och, som mest, ta h\u00e4nsyn till andra typer av inneh\u00e5ll i texten innan du skickar det till <a href=\"https:\/\/php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a> och du borde vara bra att g\u00e5.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det viktigaste jag vill dela med mig av i det h\u00e4r inl\u00e4gget \u00e4r ett effektivt s\u00e4tt att enkelt trunkera text med PHP f\u00f6r att rendera i front-end.<\/p>\n","protected":false},"author":1,"featured_media":236152,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,807,724],"tags":[1173],"class_list":["post-230546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-php-9","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230546"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}