Text
-
class Cake\Utility\Text
La classe Text inclut des méthodes pratiques pour créer et manipuler des chaînes
de caractères et est normalement accessible statiquement. Exemple:
Text::uuid().
Si vous avez besoin des fonctionnalités de TextHelper en-dehors
d’une View, utilisez la classe Text:
namespace App\Controller;
use Cake\Utility\Text;
class UsersController extends AppController
{
public function initialize(): void
{
parent::initialize();
$this->loadComponent('Auth');
}
public function afterLogin()
{
$message = $this->Users->find('new_message');
if (!empty($message)) {
// notifie un nouveau message à l'utilisateur
$this->FLash->success(__(
'Vous avez un message: {0}',
Text::truncate($message['Message']['body'], 255, ['html' => true])
));
}
}
}
Convertion des Chaînes de Caractères en ASCII
-
static Cake\Utility\Text::transliterate($string, $transliteratorId = null)
La méthode translisterate convertit par défaut tous les caractères dans la
chaîne soumise dans son équivalent en caractères ASCII. La méthode s’attend à
avoir une chaîne encodée en UTF-8 en entrée. La conversion des caractères peut
être controllée en utilisant des identifiants de translitération que vous
passez via l’argument $transliteratorId de la méthode ou en changeant
l’identifiant par défaut à l’aide de Text::setTransliteratorId().
Les identifiants de translitération d’ICU sont généralement sous la forme
<source script>:<target script> et vous pouvez spécifier plusieurs couples
de conversion en les séparant par des ;. Vous trouverez plus
d’informations sur les identifiants de transliterateurs
ici:
// apple purée
Text::transliterate('apple purée');
// Ubermensch (seuls les caractères latin seront translitérés)
Text::transliterate('Übérmensch', 'Latin-ASCII;');
Créer des chaînes saines pour les URL
-
static Cake\Utility\Text::slug($string, $options = [])
La méthode slug va translitérer tous les caractères en leurs équivalents
ASCII et convertir tous les caractères non reconnus ainsi que les espaces en
trait d’union (-). Elle s’attend à recevoir une chaîne encodée en UTF-8 en
entrée.
Vous pouvez lui passer un tableau d’options pour avoir plus de contrôle sur le
slug retourné. Le paramètre $options peut aussi être une chaîne de
caractères, auquel cas il sera utilisé comme caractère de remplacement. Les
options supporté sont:
Générer des UUIDs
-
static Cake\Utility\Text::uuid
La méthode UUID est utilisée pour générer des identificateurs uniques comme
per RFC 4122. UUID est une chaîne de caractères de 128-bit au format
485fc381-e790-47a3-9794-1337c0a8fe68:
Text::uuid(); // 485fc381-e790-47a3-9794-1337c0a8fe68
Parseur de chaînes simples
-
static Cake\Utility\Text::tokenize($data, $separator = ', ', $leftBound = '(', $rightBound = ')')
Tokenizes une chaîne en utilisant $separator, en ignorant toute instance de
$separator qui apparait entre $leftBound et $rightBound.
Cette méthode peut être utile quand on sépare les données en formatage régulier
comme les listes de tag:
$data = "cakephp 'great framework' php";
$result = Text::tokenize($data, ' ', "'", "'");
// le résultat contient
['cakephp', "'great framework'", 'php'];
-
Cake\Utility\Text::parseFileSize(string $size, $default)
Cette méthode enlève le format d’un nombre à partir d’une taille de byte lisible
par un humain en un nombre entier de bytes:
$int = Text::parseFileSize('2GB');
Fixer la largeur d’un texte
-
static Cake\Utility\Text::wrap($text, $options = [])
Entoure un block de texte pour un ensemble de largeur, et indente aussi les
blocks. Peut entourer intelligemment le texte ainsi les mots ne sont pas coupés
d’une ligne à l’autre:
$text = 'Ceci est la chanson qui ne stoppe jamais.';
$result = Text::wrap($text, 22);
// retourne
Ceci est la chanson
qui ne stoppe jamais.
Vous pouvez fournir un tableau d’options qui contrôlent la façon dont on
entoure. Les options possibles sont:
width La largeur de l’enroulement. Par défaut à 72.
wordWrap Entoure ou non les mots entiers. Par défaut à true.
indent Le caractère avec lequel on indente les lignes. Par défaut
à “”.
indentAt Le nombre de ligne pour commencer l’indentation du texte.
Par défaut à 0.
-
static Cake\Utility\Text::wrapBlock($text, $options = [])
Si vous devez vous assurer que la largeur totale du bloc généré ne dépassera pas
une certaine largeur y compris si elle contient des indentations, vous devez
utiliser wrapBlock() au lieu de wrap(). C’est particulièrement utile
pour générer du texte dans la console par exemple. Elle accepte les mêmes
options que wrap():
$text = 'Ceci est la chanson qui ne stoppe jamais. Ceci est la chanson qui ne stoppe jamais.';
$result = Text::wrapBlock($text, [
'width' => 22,
'indent' => ' → ',
'indentAt' => 1
]);
// Génère
Ceci est la chanson
→ qui ne stoppe
→ jamais. Ceci est
→ la chanson qui ne
→ stoppe jamais.
Subrillance de Sous-Chaîne
-
Cake\Utility\Text::highlight(string $haystack, string $needle, array $options = [])
Mettre en avant $needle dans $haystack en utilisant la chaîne spécifique
$options['format'] ou une chaîne par défaut.
Options:
format - chaîne la partie de html avec laquelle la phrase sera mise en
exergue.
html - booléen Si true, va ignorer tous les tags HTML, s’assurant que
seul le bon texte est mise en avant.
Exemple:
// appelé avec TextHelper
echo $this->Text->highlight(
$lastSentence,
'using',
['format' => '<span class="highlight">\1</span>']
);
// appelé avec Text
use Cake\Utility\Text;
echo Text::highlight(
$lastSentence,
'using',
['format' => '<span class="highlight">\1</span>']
);
Sortie:
Highlights $needle in $haystack <span class="highlight">using</span> the
$options['format'] string specified or a default string.
Retirer les Liens
-
Cake\Utility\Text::stripLinks($text)
Enlève le $text fourni de tout lien HTML.
Tronquer le Texte
-
Cake\Utility\Text::truncate(string $text, int $length = 100, array $options)
Si $text est plus long que $length, cette méthode le tronque à la
longueur $length et ajoute un suffixe 'ellipsis', si défini. Si
'exact' est passé à false, le truchement va se faire au premier espace
après le point où $length a dépassé. Si 'html' est passé à true, les
balises html seront respectés et ne seront pas coupés.
$options est utilisé pour passer tous les paramètres supplémentaires, et a
les clés suivantes possibles par défaut, celles-ci étant toutes optionnelles:
[
'ellipsis' => '...',
'exact' => true,
'html' => false
]
Exemple:
// appelé avec TextHelper
echo $this->Text->truncate(
'The killer crept forward and tripped on the rug.',
22,
[
'ellipsis' => '...',
'exact' => false
]
);
// appelé avec Text
App::uses('Text', 'Utility');
echo Text::truncate(
'The killer crept forward and tripped on the rug.',
22,
[
'ellipsis' => '...',
'exact' => false
]
);
Sortie:
Tronquer une chaîne par la fin
-
Cake\Utility\Text::tail(string $text, int $length = 100, array $options)
Si $text est plus long que $length, cette méthode retire une sous-chaîne
initiale avec la longueur de la différence et ajoute un préfixe 'ellipsis',
s’il est défini. Si 'exact' est passé à false, le truchement va se faire
au premier espace avant le moment où le truchement aurait été fait.
$options est utilisé pour passer tous les paramètres supplémentaires, et a
les clés possibles suivantes par défaut, toutes sont optionnelles:
[
'ellipsis' => '...',
'exact' => true
]
Exemple:
$sampleText = 'I packed my bag and in it I put a PSP, a PS3, a TV, ' .
'a C# program that can divide by zero, death metal t-shirts'
// appelé avec TextHelper
echo $this->Text->tail(
$sampleText,
70,
[
'ellipsis' => '...',
'exact' => false
]
);
// appelé avec Text
App::uses('Text', 'Utility');
echo Text::tail(
$sampleText,
70,
[
'ellipsis' => '...',
'exact' => false
]
);
Sortie:
...a TV, a C# program that can divide by zero, death metal t-shirts