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

Marius Ilie
quelle
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.

BetaRide
quelle
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()).

sobi3ch
quelle
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