{"id":231145,"date":"2022-12-13T15:22:00","date_gmt":"2022-12-13T12:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231145"},"modified":"2022-12-13T15:22:30","modified_gmt":"2022-12-13T12:22:30","slug":"kuinka-katkaista-tekstiae-helposti-php-ssae","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-katkaista-tekstiae-helposti-php-ssae\/","title":{"rendered":"Kuinka katkaista teksti\u00e4 helposti PHP:ss\u00e4"},"content":{"rendered":"\n<p>Jos k\u00e4sittelet WordPressi\u00e4 yksinomaan blogisovelluksena tai, jopa liberaalimmassa mieless\u00e4, sis\u00e4ll\u00f6nhallintaj\u00e4rjestelm\u00e4n\u00e4, olet todenn\u00e4k\u00f6isesti tottunut k\u00e4ytt\u00e4m\u00e4\u00e4n editoria tai otekentt\u00e4\u00e4 teaserin kirjoittamiseen ja lis\u00e4\u00e4m\u00e4\u00e4n sitten Lue lis\u00e4\u00e4 -linkin<strong>.<\/strong><\/p>\n<h3>WordPress verkkosovelluksille (taas)<\/h3>\n<p>Niille, jotka ovat lukeneet t\u00e4t\u00e4 sivustoa jonkin aikaa, olen erityisen kiinnostunut WordPressin k\u00e4ytt\u00e4misest\u00e4 verkkosovelluskehityksen perustana (katso my\u00f6s <a href=\"https:\/\/tommcfarlin.com\/web-applications-with-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4<\/a>, <strong><a href=\"https:\/\/tommcfarlin.com\/wordpress-for-web-application-development\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4<\/a><\/strong>, <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4m\u00e4<\/a><\/strong> ja <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/oliolaehtoeinen-tapa-tyoeskennellae-mallien-ja-verkkosovellusten-kanssa\/\" title=\"t\u00e4m\u00e4\">t\u00e4m\u00e4<\/a><\/strong> ).<\/p>\n<p>T\u00e4m\u00e4n julkaisun aikaan t\u00e4m\u00e4 artikkeli on noin kuusi vuotta vanha.<\/p>\n<p>Joten joskus k\u00e4ytt\u00f6liittym\u00e4ss\u00e4 render\u00f6im\u00e4si sis\u00e4lt\u00f6 saattaa olla per\u00e4isin kolmannen osapuolen l\u00e4hteest\u00e4.<\/p>\n<h3>Takaisin sis\u00e4lt\u00f6\u00f6n<\/h3>\n<p>Eli sovellus toimii n\u00e4in:<\/p>\n<ol>\n<li>ota yhteytt\u00e4 kolmannen osapuolen sovellusliittym\u00e4\u00e4n,<\/li>\n<li>tuoda tiedot puhelusta ja j\u00e4sent\u00e4\u00e4 niit\u00e4 tarvittaessa,<\/li>\n<li>kirjoittaa se tietokantaan,<\/li>\n<li>esitt\u00e4\u00e4 tiedot k\u00e4ytt\u00f6liittym\u00e4ss\u00e4 pyydett\u00e4ess\u00e4.<\/li>\n<\/ol>\n<p>Yll\u00e4 olevien vaiheiden v\u00e4liin mahtuu paljon, mutta t\u00e4rkein asia, jonka haluan jakaa t\u00e4ss\u00e4 viestiss\u00e4, on tehokas tapa lyhent\u00e4\u00e4 teksti\u00e4 helposti PHP:n avulla render\u00f6im\u00e4\u00e4n k\u00e4ytt\u00f6liittym\u00e4ss\u00e4.<\/p>\n<p>T\u00e4m\u00e4 on hy\u00f6dyllist\u00e4 tarjota teasereita, linkitt\u00e4\u00e4 kolmansien osapuolien sivustoille ja paljon muuta ilman, ett\u00e4 sinun tarvitsee kirjoittaa tai muokata sis\u00e4lt\u00f6\u00e4 manuaalisesti.<\/p>\n<p>Jotta voisin antaa esimerkin jaettavan funktion k\u00e4ytt\u00f6tapauksesta, on hy\u00f6dyllist\u00e4 asettaa joitain vaatimuksia. Ne ovat mielivaltaisia \u200b\u200bt\u00e4lle viestille, mutta toteutuksen tulee olla tarpeeksi konkreettinen, jotta voit pudottaa t\u00e4m\u00e4n postaukseen ilman ongelmia.<\/p>\n<p>Oletetaan:<\/p>\n<ul>\n<li>haemme teksti\u00e4 kolmannen osapuolen sovellusliittym\u00e4st\u00e4,<\/li>\n<li>tiedot on tallennettu jonnekin tietokantaan,<\/li>\n<li>tiedot ovat pelkk\u00e4\u00e4 teksti\u00e4 (rakenteessa ei ole merkint\u00f6j\u00e4 tai muita verkkopohjaisia \u200b\u200bkokonaisuuksia),<\/li>\n<li>tarvitsemme funktion, joka hyv\u00e4ksyy tekstin, ja pituuden tekstin katkaisemiseksi.<\/li>\n<\/ul>\n<p>N\u00e4m\u00e4 vaatimukset huomioon ottaen voimme asettaa funktion hyv\u00e4ksym\u00e4\u00e4n teksti\u00e4 ja argumenttien pituuden. Jos teksti on pienempi tai yht\u00e4 suuri kuin m\u00e4\u00e4ritetty pituus, ei ole mit\u00e4\u00e4n tekemist\u00e4. muussa tapauksessa voimme lyhent\u00e4\u00e4 tekstin m\u00e4\u00e4ritetyn pituiseksi ja lis\u00e4t\u00e4 ellipsin loppuun.<\/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\">T\u00e4ss\u00e4 on koodi:<\/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>Toteutukset t\u00e4h\u00e4n WordPressin kontekstissa voivat tulla lukemalla mukautettuihin taulukoihin, post-metatietoihin, postaustaulukkoon tallennettuja tietoja tai periaatteessa miss\u00e4 tahansa paikassa, johon raakateksti on tallennettu ja jonka haluat hahmontaa k\u00e4ytt\u00f6liittym\u00e4ss\u00e4. .<\/p>\n<p>Jos tekstiss\u00e4 on muuta sis\u00e4lt\u00f6\u00e4, kuten HTML-koodia tai muita kokonaisuuksia, siihen on ehk\u00e4 teht\u00e4v\u00e4 rajoituksia. Jos se on WordPressiss\u00e4, on olemassa suodattimia ja muita tapoja k\u00e4sitell\u00e4 n\u00e4it\u00e4 tietoja ennen tekstin katkaisemista, mutta se ei ole helppoa tekstin katkaisemisessa PHP:ss\u00e4, eik\u00f6 niin?<\/p>\n<p>Joten k\u00e4yt\u00e4 t\u00e4t\u00e4 ainakin puhtaasti teksti\u00e4 varten ja ota korkeintaan huomioon muun tyyppinen sis\u00e4lt\u00f6 tekstiss\u00e4 ennen kuin siirr\u00e4t sen <a href=\"https:\/\/php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a> -tiedostoon, ja sinun pit\u00e4isi olla valmis.<\/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>T\u00e4rkein asia, jonka haluan jakaa t\u00e4ss\u00e4 viestiss\u00e4, on tehokas tapa lyhent\u00e4\u00e4 teksti\u00e4 helposti k\u00e4ytt\u00e4m\u00e4ll\u00e4 PHP:t\u00e4 render\u00f6im\u00e4\u00e4n k\u00e4ytt\u00f6liittym\u00e4ss\u00e4.<\/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":[719,895,803],"tags":[1166],"class_list":["post-231145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-php-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231145"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231145\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}