{"id":231330,"date":"2022-12-13T15:12:00","date_gmt":"2022-12-13T12:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231330"},"modified":"2022-12-13T15:12:31","modified_gmt":"2022-12-13T12:12:31","slug":"come-troncare-facilmente-il-testo-in-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-troncare-facilmente-il-testo-in-php\/","title":{"rendered":"Come troncare facilmente il testo in PHP"},"content":{"rendered":"\n<p>Se tratti WordPress esclusivamente come un&#8217;applicazione di blogging o, anche in senso pi\u00f9 liberale, un sistema di gestione dei contenuti, probabilmente sei abituato a utilizzare l&#8217;editor o il campo dell&#8217;estratto per scrivere un teaser, quindi introduci un link Leggi altro<strong>.<\/strong><\/p>\n<h3>WordPress per applicazioni Web (di nuovo)<\/h3>\n<p>Per coloro che hanno letto questo sito per un po&#8217;, sono particolarmente interessato all&#8217;utilizzo di WordPress come base per lo sviluppo di applicazioni web (vedi anche <a href=\"https:\/\/tommcfarlin.com\/web-applications-with-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo<\/a>, <strong><a href=\"https:\/\/tommcfarlin.com\/wordpress-for-web-application-development\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo<\/a><\/strong>, <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo<\/a><\/strong> e <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/un-modo-orientato-agli-oggetti-di-lavorare-con-modelli-e-applicazioni-web\/\" title=\"questo\">questo<\/a><\/strong> ).<\/p>\n<p>Al momento di questo post, questo \u00e8 un articolo che ha circa sei anni.<\/p>\n<p>Quindi ci sono momenti in cui il contenuto di cui eseguirai il rendering sul front-end potrebbe provenire da una fonte di terze parti.<\/p>\n<h3>Torna al contenuto<\/h3>\n<p>Cio\u00e8, l&#8217;applicazione funziona in questo modo:<\/p>\n<ol>\n<li>contattare un&#8217;API di terze parti,<\/li>\n<li>importare i dati dalla chiamata e analizzarli se necessario,<\/li>\n<li>scrivilo nel database,<\/li>\n<li>rendere le informazioni sul front-end quando richiesto.<\/li>\n<\/ol>\n<p>C&#8217;\u00e8 molto che pu\u00f2 andare tra ciascuno dei passaggi precedenti, ma la cosa principale che voglio condividere in questo post \u00e8 un modo efficace per troncare facilmente il testo usando PHP per il rendering sul front-end.<\/p>\n<p>Questo \u00e8 utile per fornire teaser, collegarsi a siti di terze parti e altro ancora senza dover scrivere o modificare il contenuto manualmente.<\/p>\n<p>Per fornire un caso d&#8217;uso di esempio per la funzione che condivider\u00f2, \u00e8 utile avere alcuni requisiti. Sono arbitrari per questo post, ma l&#8217;implementazione dovrebbe essere abbastanza concreta da poterla inserire nel post senza problemi.<\/p>\n<p>Assumiamo:<\/p>\n<ul>\n<li>stiamo estraendo il testo da un&#8217;API di terze parti,<\/li>\n<li>i dati sono archiviati da qualche parte all&#8217;interno del database,<\/li>\n<li>i dati sono in testo normale (nessun markup o qualsiasi altro tipo di entit\u00e0 basata sul web nella struttura),<\/li>\n<li>abbiamo bisogno di una funzione che accetti il \u200b\u200btesto e una lunghezza per troncare il testo.<\/li>\n<\/ul>\n<p>Dati questi requisiti, possiamo impostare una funzione per accettare testo e una lunghezza di argomenti. Se il testo \u00e8 minore o uguale alla lunghezza specificata, non c&#8217;\u00e8 niente da fare; in caso contrario, possiamo troncare il testo alla lunghezza specificata e aggiungere ellissi finali.<\/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\">Ecco il codice:<\/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>Le implementazioni per questo nel contesto di WordPress potrebbero derivare dalla lettura dei dati archiviati in tabelle personalizzate, nei metadati dei post, nella tabella dei post o praticamente in qualsiasi luogo in cui \u00e8 archiviato il testo grezzo e si desidera renderizzarlo sul front-end .<\/p>\n<p>Se nel testo sono presenti altri contenuti come HTML o altre entit\u00e0, potrebbe essere necessario prevedere delle indennit\u00e0. Se \u00e8 in WordPress, ci sono filtri e altre forme di gestione di quei dati prima di troncare il testo, ma \u00e8 oltre il punto di troncare facilmente il testo in PHP, giusto?<\/p>\n<p>Quindi, almeno, usalo esclusivamente per il testo e, al massimo, prendi in considerazione altri tipi di contenuto nel testo prima di passarlo in <a href=\"https:\/\/php.net\/manual\/en\/function.preg-replace.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">preg_replace<\/a> e dovresti essere a posto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La cosa principale che voglio condividere in questo post \u00e8 un modo efficace per troncare facilmente il testo usando PHP per il rendering sul 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":[896,804,720],"tags":[1168],"class_list":["post-231330","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-php-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231330"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231330\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236152"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}