Comment filtrer le texte par programmation?

8

J'ai besoin d'afficher un texte et de lui appliquer le filtre choisi. Le texte est enregistré à l'aide du text_formattype de champ.

Je connais donc le texte d'origine, je connais le type de format choisi mais je ne sais pas comment filtrer le texte.

Comment filtrer du texte par programmation? Merci

Marius Ilie
la source
2
Voulez-vous le faire par programme. Si oui, consultez ce lien: stackoverflow.com/questions/2959962/…
BetaRide
ce fut une mauvaise journée aujourd'hui. J'en ai utilisé tant de fois auparavant, mais je ne m'en souviens plus. Pouvez-vous ajouter ceci comme réponse pour que je puisse l'accepter?
Marius Ilie
La réponse est courte. Il a été converti pour commenter automatiquement :-(. Vous pouvez toujours voter positivement ;-).
BetaRide
@BetaRide si vous ajoutez un lien vers check_markup(), et copiez également la description résumée, vous aurez une réponse parfaitement acceptable (même bonne ) :)
Clive

Réponses:

8

Ce message sur stackoverflow décrit comment procéder par programme.

Appelez simplement check_markup et transmettez votre texte et l'identifiant du filtre.

check_markup($text, $format_id = NULL, $langcode = '', $cache = FALSE)

Exécutez tous les filtres activés sur un morceau de texte.

BetaRide
la source
Il existe une différence entre filter_id et format_id . check_markup()accepte un format_id et exécutera tous les filtres appliqués à ce format.
komlenic
4

Avec la check_markup()fonction, vous êtes obligé d'utiliser le format texte (format texte = bloc de filtres).

Si vous souhaitez utiliser UN seul filtre exact sans format de filtre complet (comme: Convertir les sauts de ligne en HTML ), utilisez cette fonction personnalisée.

/**
 * Custom function to use only ONE filter wightout full format.
 *
 * @param {string} $string String to filter.
 * @param {string} $filter Filter name to use on $string
 * @return {string}        Filtered string.
 */
function filter($string, $filter) {
  $filters = filter_get_filters();
  $filter_autop = $filters[$filter];

  return $filter_autop['process callback']($string);
}

Vous pouvez vérifier la liste des filtres disponibles avec dpm(filter_get_filters()).

sobi3ch
la source
1
Ceci est une bonne réponse!
Alex Skrypnyk
1
Cela peut fonctionner pour certains filtres, mais uniquement pour les simples. En général, le processus de rappel api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… prend plus de paramètres, y compris les paramètres de filtre. Il existe également un rappel de préparation.
AdamS