Wie programmgesteuert wird Text gefiltert?


8

Ich muss einen Text anzeigen und den ausgewählten Filter darauf anwenden. Der Text wird mit dem text_formatFeldtyp gespeichert .

Ich kenne also den Originaltext, den gewählten Formattyp, aber ich weiß nicht, wie ich den Text tatsächlich filtern soll.

Wie kann ich Text programmgesteuert filtern? Vielen Dank


2
Möchten Sie dies programmgesteuert tun? Wenn ja, schauen Sie sich diesen Link an: stackoverflow.com/questions/2959962/…
BetaRide

Es war heute ein schlechter Tag. Ich habe das schon so oft benutzt, aber ich konnte mich jetzt einfach nicht erinnern. Können Sie dies als Antwort hinzufügen, damit ich es akzeptieren kann?
Marius Ilie

Die Antwort ist zu kurz. Es wurde automatisch in einen Kommentar umgewandelt :-(. Sie können den Kommentar trotzdem positiv bewerten ;-).
BetaRide

@BetaRide Wenn Sie einen Link hinzufügen check_markup()und auch die zusammenfassende Beschreibung kopieren, haben Sie eine vollkommen akzeptable (sogar gute ) Antwort :)
Clive

Antworten:


8

In diesem Beitrag zum Stackoverflow wird beschrieben, wie dies programmgesteuert durchgeführt wird.

Rufen Sie einfach check_markup auf und geben Sie Ihren Text und die Filter-ID ein.

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

Führen Sie alle aktivierten Filter für einen Text aus.


Es gibt einen Unterschied zwischen filter_id und format_id . check_markup()akzeptiert eine format_id und führt alle Filter aus, die auf dieses Format angewendet werden.
komlenic

4

Mit der check_markup()Funktion müssen Sie das Textformat verwenden (Textformat = Filterreihe).

Wenn Sie nur EINEN , exakten Filter ohne volles Filterformat verwenden möchten (z. B. Zeilenumbrüche in HTML konvertieren ), verwenden Sie diese benutzerdefinierte Funktion.

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

Sie können die Liste der verfügbaren Filter mit überprüfen dpm(filter_get_filters()).


1
Das ist eine richtige Antwort!
Alex Skrypnyk

1
Dies funktioniert möglicherweise für einige Filter, aber nur für die einfachen. Im Allgemeinen benötigt der Prozessrückruf api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… mehr Parameter, einschließlich Filtereinstellungen. Es gibt auch einen Rückruf vorbereiten.
AdamS
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.