¿Cómo filtrar programáticamente el texto?

8

Necesito mostrar un texto y aplicarle el filtro elegido. El texto se guarda usando el text_formattipo de campo.

Entonces sé el texto original, sé el tipo de formato elegido, pero no sé cómo filtrar el texto.

¿Cómo puedo filtrar el texto mediante programación? Gracias

Marius Ilie
fuente
2
¿Quieres hacer esto mediante programación? En caso afirmativo, eche un vistazo a este enlace: stackoverflow.com/questions/2959962/…
BetaRide
Hoy fue un mal día. Lo usé muchas veces antes, pero ahora no podía recordarlo. ¿Puedes agregar esto como respuesta para que pueda aceptarlo?
Marius Ilie
La respuesta es corta. Se convirtió en comentario automáticamente :-(. Todavía puedes votar el comentario ;-).
BetaRide
@BetaRide si agrega un enlace check_markup()y también copia la descripción resumida, tendrá una respuesta perfectamente aceptable (incluso buena ) :)
Clive

Respuestas:

8

Esta publicación en stackoverflow describe cómo hacer esto mediante programación.

Simplemente llame a check_markup y pase su texto y la identificación del filtro.

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

Ejecute todos los filtros habilitados en un fragmento de texto.

BetaRide
fuente
Hay una diferencia entre filter_id y format_id . check_markup()acepta un format_id y ejecutará todos los filtros aplicados a ese formato.
komlenic
4

Con la check_markup()función, está obligado a utilizar el formato de texto (formato de texto = banch de filtros).

Si desea utilizar solo UNO , filtro exacto sin formato de filtro completo (como: Convertir saltos de línea en HTML ), utilice esta función personalizada.

/**
 * 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);
}

Puede consultar la lista de filtros disponibles con dpm(filter_get_filters()).

sobi3ch
fuente
1
Esta es una respuesta correcta!
Alex Skrypnyk
1
Esto puede funcionar para algunos filtros, pero solo para los simples. En general, el proceso de devolución de llamada api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… toma más parámetros, incluida la configuración del filtro. También hay una devolución de llamada de preparación.
AdamS