Bagaimana pemrograman menyaring teks?

8

Saya perlu menampilkan teks dan menerapkan filter yang dipilih untuk itu. Teks disimpan menggunakan text_formattipe bidang.

Jadi saya tahu teks aslinya, saya tahu jenis format yang dipilih tetapi saya tidak tahu bagaimana sebenarnya menyaring teks.

Bagaimana saya bisa memfilter teks secara terprogram? Terima kasih

Marius Ilie
sumber
2
Apakah Anda ingin melakukan ini secara terprogram? Jika ya, lihat tautan ini: stackoverflow.com/questions/2959962/...
BetaRide
itu hari yang buruk hari ini. Saya menggunakan ini berkali-kali sebelumnya tetapi saya tidak ingat sekarang. Bisakah Anda menambahkan ini sebagai jawaban agar saya dapat menerimanya?
Marius Ilie
Jawabannya singkat. Itu bisa dikonversi menjadi komentar secara otomatis :-(. Anda masih dapat menambahkan komentar ;-).
BetaRide
@BetaRide jika Anda menambahkan tautan ke check_markup(), dan juga menyalin deskripsi ringkasan, Anda akan memiliki jawaban (bahkan bagus ) yang bisa diterima :)
Clive

Jawaban:

8

Posting ini di stackoverflow menjelaskan cara melakukan ini secara terprogram.

Panggil saja check_markup dan sampaikan teks dan id filter Anda.

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

Jalankan semua filter yang diaktifkan pada selembar teks.

BetaRide
sumber
Ada perbedaan antara filter_id dan format_id . check_markup()menerima format_id , dan akan menjalankan semua filter yang diterapkan ke format itu.
komlenic
4

Dengan check_markup()fungsi Anda dipaksa untuk menggunakan format teks (format teks = banch of filter).

Jika Anda ingin menggunakan hanya SATU , filter yang tepat tanpa format filter lengkap (seperti: Konversi pemecah baris ke HTML ) kemudian gunakan fungsi khusus ini.

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

Anda dapat memeriksa daftar filter yang tersedia dengan dpm(filter_get_filters()).

sobi3ch
sumber
1
Ini jawaban yang benar!
Alex Skrypnyk
1
Ini mungkin bekerja untuk beberapa filter, tetapi hanya yang sederhana. Secara umum proses callback api.drupal.org/api/drupal/modules%21filter%21filter.api.php/… mengambil lebih banyak parameter, termasuk pengaturan filter. Ada juga yang menyiapkan callback.
AdamS