プログラムでテキストをどのようにフィルタリングしますか?


8

テキストを表示し、選択したフィルターをそれに適用する必要があります。テキストはtext_formatフィールドタイプを使用して保存されます。

つまり、元のテキストは知っています。選択した形式の種類はわかっていますが、実際にテキストをフィルター処理する方法がわかりません。

プログラムでテキストをフィルター処理するにはどうすればよいですか?ありがとう


2
これをプログラムで実行しますか?はい場合は、このリンクを見てい:stackoverflow.com/questions/2959962/...を
BetaRide

今日は悪い日だった。以前は何度も使っていましたが、今は思い出せません。これを回答として追加して、受け入れてもらえますか?
Marius Ilie

答えはショートすることです。自動的にコメントに変換されました:-(。コメントに賛成投票できます;-)。
BetaRide

@BetaRideにへのリンクを追加しcheck_markup()、概要の説明もコピーすると、完全に許容できる(さらに良い)回答が得られます:)
クライヴ

回答:


8

Stackoverflowに関するこの投稿では、これをプログラムで行う方法について説明しています。

check_markupを呼び出して、テキストとフィルターIDを渡すだけです。

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

1つのテキストに対して有効なすべてのフィルターを実行します。


filter_idformat_idには違いがありますformat_idをcheck_markup()受け入れ、そのフォーマットに適用されたすべてのフィルターを実行します。
komlenic

4

ではcheck_markup()機能しますが、使用テキスト形式(テキスト形式=フィルタのbanch)に強制されています。

あなただけ使用する場合はONEフルフィルターフォーマットせずに、正確なフィルタを(のような:HTMLに変換改行)このカスタム関数を使用します。

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

で利用可能なフィルターのリストを確認できますdpm(filter_get_filters())


1
正解です!
Alex Skrypnyk 2016

1
これは一部のフィルターでは機能しますが、単純なフィルターでのみ機能します。一般に、プロセスコールバックapi.drupal.org/api/drupal/modules%21filter%21filter.api.php/…は、フィルター設定を含む、より多くのパラメーターを受け取ります。準備コールバックもあります。
AdamS 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.