Page Contents

CakeText

class CakeText

La classe CakeText inclut des méthodes pratiques pour la création et la manipulation des chaînes de caractères et est normalement accessible statiquement. Exemple: CakeText::uuid().

Obsolète depuis la version 2.7: La classe String a été dépréciée dans 2.7 en faveur de la classe CakeText. Bien que la classe String soit toujours disponible pour garder une rétro-compatibilité, utiliser CakeText est recommandée puisqu’elle offre une compatibilité avec PHP7 et HHVM.

Si vous avez besoin des fonctionnalités de TextHelper en-dehors d’une View, utilisez la classe CakeText:

class UsersController extends AppController {

    public $components = array('Auth');

    public function afterLogin() {
        App::uses('CakeText', 'Utility');
        $message = $this->User->find('new_message');
        if (!empty($message)) {
            // notification à l'utilisateur d'un nouveau message
            $this->Session->setFlash(__('Vous avez un message: %s', CakeText::truncate($message['Message']['body'], 255, array('html' => true))));
        }
    }
}

Modifié dans la version 2.1: Plusieurs méthodes de TextHelper ont été déplacées dans la classe CakeText.

static CakeText::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 128bit au format 485fc381-e790-47a3-9794-1337c0a8fe68.

CakeText::uuid(); // 485fc381-e790-47a3-9794-1337c0a8fe68
static CakeText::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 = CakeText::tokenize($data, ' ', "'", "'");
// le résultat contient
array('cakephp', "'great framework'", 'php');
static CakeText::insert($string, $data, $options = array())

La méthode insérée est utilisée pour créer des chaînes templates et pour permettre les remplacements de clé/valeur:

CakeText::insert('Mon nom est :name et j'ai :age ans.', array('name' => 'Bob', 'age' => '65'));
// génère: "Mon nom est Bob et j'ai 65 ans."
static CakeText::cleanInsert($string, $options = array())

Nettoie une chaîne formatée CakeText::insert avec $options donnée qui dépend de la clé “clean” dans $options. La méthode par défaut utilisée est le texte mais html est aussi disponible. Le but de cette fonction est de remplacer tous les espaces blancs et les balises non nécessaires autour des placeholders qui ne sont pas remplacés par Set::insert.

Vous pouvez utiliser les options suivantes dans le tableau options:

$options = array(
    'clean' => array(
        'method' => 'text', // ou html
    ),

    'before' => '',
    'after' => ''
);
static CakeText::wrap($text, $options = array())

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 sliced across lines:

$text = 'Ceci est la chanson qui ne stoppe jamais.';
$result = CakeText::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.
CakeText::highlight(string $haystack, string $needle, array $options = array())
Paramètres:
  • $haystack (string) – La chaîne de caractères à rechercher.
  • $needle (string) – La chaîne à trouver.
  • $options (array) – Un tableau d’options, voir ci-dessous.

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 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',
    array('format' => '<span class="highlight">\1</span>')
);

// appelé avec CakeText
App::uses('CakeText', 'Utility');
echo CakeText::highlight(
    $lastSentence,
    'using',
    array('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.

Enlève le $text fourni de tout lien HTML.

CakeText::truncate(string $text, int $length=100, array $options)
Paramètres:
  • $text (string) – Le texte à tronquer.
  • $length (int) – La longueur en caractères pour laquelle le texte doit être tronqué.
  • $options (array) – Un tableau d’options à utiliser.

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ées et ne seront pas coupées.

$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:

array(
    'ellipsis' => '...',
    'exact' => true,
    'html' => false
)

Exemple:

// appelé avec TextHelper
echo $this->Text->truncate(
    'The killer crept forward and tripped on the rug.',
    22,
    array(
        'ellipsis' => '...',
        'exact' => false
    )
);

// appelé avec CakeText
App::uses('CakeText', 'Utility');
echo CakeText::truncate(
    'The killer crept forward and tripped on the rug.',
    22,
    array(
        'ellipsis' => '...',
        'exact' => false
    )
);

Sortie:

The killer crept...

Modifié dans la version 2.3: ending a été remplacé par ellipsis. ending est toujours utilisé dans 2.2.1.

CakeText::tail(string $text, int $length=100, array $options)
Paramètres:
  • $text (string) – The text à tronquer.
  • $length (int) – La longueur en caractères pour laquelle le texte doit être tronqué.
  • $options (array) – Un tableau d’options à utiliser.

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', si 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:

array(
    'ellipsis' => '...',
    'exact' => true
)

Nouveau dans la version 2.3.

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,
    array(
        'ellipsis' => '...',
        'exact' => false
    )
);

// appelé avec CakeText
App::uses('CakeText', 'Utility');
echo CakeText::tail(
    $sampleText,
    70,
    array(
        'ellipsis' => '...',
        'exact' => false
    )
);

Sortie:

...a TV, a C# program that can divide by zero, death metal t-shirts
CakeText::excerpt(string $haystack, string $needle, integer $radius=100, string $ending="...")
Paramètres:
  • $haystack (string) – La chaîne à chercher.
  • $needle (string) – La chaîne to excerpt around.
  • $radius (int) – Le nombre de caractères de chaque côté de $needle que vous souhaitez inclure.
  • $ending (string) – Le Texte à ajouter/préfixer au début ou à la fin du résultat.

Extrait un excerpt de $haystack surrounding the $needle avec un nombre de caractères de chaque côté déterminé par $radius, et prefix/suffix with $ending. Cette méthode est spécialement pratique pour les résultats recherchés. La chaîne requêtée ou les mots clés peuvent être montrés dans le document résultant.

// appelé avec TextHelper
echo $this->Text->excerpt($lastParagraph, 'method', 50, '...');

// appelé avec CakeText
App::uses('CakeText', 'Utility');
echo CakeText::excerpt($lastParagraph, 'method', 50, '...');

Sortie:

... par $radius, et prefix/suffix avec $ending. Cette méthode est
spécialement pratique pour les résultats de recherche. La requête...
CakeText::toList(array $list, $and='and')
Paramètres:
  • $list (array) – Tableau d’éléments à combiner dans une list sentence.
  • $and (string) – Le mot utilisé pour le dernier join.

Crée une liste séparée avec des virgules, où les deux derniers items sont joins avec “and”.

// appelé avec TextHelper
echo $this->Text->toList($colors);

// appelé avec CakeText
App::uses('CakeText', 'Utility');
echo CakeText::toList($colors);

Sortie:

red, orange, yellow, green, blue, indigo et violet