Cara menghapus string di php

Ada beberapa function yang bisa kita gunakan dalam PHP untuk menghilangkan Untuk menghilangkan karakter atau substring tertentu. Jika kita ingin menghilangkan bagian-bagian yang sama dari seluruh string, kita bisa menggunakan str_replace(). Tapi ,untuk menghilangkan sebagian karakter dari sisi kiri dan kanan tanpa mempengaruhi sisi tengahnya, kita akan membutuhkan trim. Perbedaan hasil dari trim dan str_replace bisa kalian lihat di bawah ini.

<?PHP
    $s=”__Ini_cuma_contoh__”;
    echo(“$s :”.$s.”<BR />”);
    echo(“str_replace :”.str_replace(“_”, ” “, $s).”<BR />”);
    echo(“trim : “.trim($s, “_“).”<BR />”);
?>

Cara menghapus string di php

Dari contoh script di atas kita bisa melihat perbedaan dari function str_replace() dan trim(). Function str_replace menghapus substring atau karakter tertentu (yang pada contoh di atas adalah underscore / “_”) dengan menggunakan string kosong(“”). Function trim tidak mengganti substring atau karakter tertentu “dari seluruh bagian string”, tapi trim hanya menghilangkan huruf tertentu dari sisi kiri dan sisi kanan string. 

Function trim menggunakan parameter yang lebih sedikit daripada str_replace karena yang dibutuhkan sebagai parameter hanya karakter yang dihapus, ini berbeda dengan str_replace yang butuh substring atau karakter yang akan diganti dan gantinya.

Function trim tidak hanya bisa menghapus satu karakter, tapi juga bisa menghapus beberapa karakter dari sisi kiri dan kanan string. Jika kalian hanya ingin menghapus bagian kanan string, gunakan rtrim, dan kalau kalian ingin menghapus bagian kiri string, gunakan ltrim. Berikut ini adalah contoh penggunaan “ketiga function tersebut”.

<?PHP
    $s=”__Ini_cuma_contoh__”;
    echo(“$s :”.$s.”<BR />”);
    echo(“trim : “.trim($s, “_hI”).”<BR />”);

    echo(“ltrim : “.ltrim($s, “_”).”<BR />”);
    echo(“rtrim : “.rtrim($s, “_”).”<BR />”);
?>

Cara menghapus string di php

Sekadar mengingatkan!

Function-function yang sudah kita pelajari di atas, yaitu :

  1. str_replace : Mengganti substring dengan string lainnya.
  2. trim : Menghapus karakter di bagian kiri dan kanan string.
  3. rtrim : Menghapus karakter di bagian kanan string.
  4. ltrim : Menghapus karakter di bagian kiri string.

Btw; function trim, ltrim dan rtrim bisa menggunakan satu parameter saja, yaitu string yang ingin dihapus sisi kiri dan kanannya. Tanpa parameter kedua, karakter yang akan dihapus yaitu “n”(baris baru), tab, tab vertikal, “r” (return), dan karakter null.

dari pengalaman saya kamarin pembuatan website yang berkaitan dengan angka atau huruf yang mempunyai karakter lain.

saya membuat sebuah perhitungan untuk beberapa transaksi.

untuk cara menghilangkan karakter lain pada post php saya menggukan script berikut:

<?php
$angka = "-20.000";
$hasil = preg_replace("/[^0-9]/", "", $angka);
echo $hasil;
//maka akan menampilkan data 20000

cara ini cukup efektif untuk memperoleh hasil angka yang di hitung, jadi user tidak bingung dari tampilan yang kita buat.

Tugas menghapus semua atau hanya tag html tertentu dari string sering muncul di mana perlu untuk memberikan kesempatan bagi setiap pengunjung halaman untuk menambahkan informasi baru. Contoh paling umum adalah buku tamu atau sistem komentar situs. Teks yang ditambahkan dengan cara ini dapat berisi banyak tag yang berbeda, ditambahkan secara tidak sengaja saat menyalin teks atau dengan sengaja membuat pesan menjadi "sangat asli". Perlu juga diperhatikan upaya jahat untuk menyuntikkan kode berbahaya ke situs dalam tag skrip atau upaya merusak tata letak halaman dengan tag yang tidak perlu.

Dalam salah satu kasus di atas, menjadi perlu untuk menghapusnya dari tag html yang tidak perlu sebelum menulis informasi baru.

Pembersihan lengkap teks dari tag html

Ekspresi reguler sering digunakan untuk tugas seperti itu, tetapi dalam artikel ini kami akan mempertimbangkan metode paling sederhana - menghapus tag menggunakan fungsi strip_tags php. Fungsi ini hanya menghapus tag dari string yang ditentukan.

$ str_in = "

Ku teks dengan bermacam-macam tag.

" ;
$ str_out = strip_tags ($ str_in);
echo $str_out;

Sebagai hasil dari pemrosesan ini, kami mendapatkan string tanpa tag di variabel $ str_out:

Teks saya dengan berbagai tag.

* Perhatikan bahwa fungsi strip_tags hanya menghapus tag itu sendiri, meninggalkan kontennya di antara tag pembuka dan penutup.

Menghapus tag html individual dari teks

Terkadang Anda hanya perlu menghapus tag tertentu dari sebuah string. Di sini kita juga akan menggunakan fungsi strip_tags, tetapi kali ini kita akan menentukan tag yang akan disimpan dengan parameter kedua (opsional).

Misalnya, saat memproses string, Anda hanya perlu meninggalkan tautan:

$ str_in = "

Ku teks dengan bermacam-macam tag.

" ;
$ str_out = strip_tags ($ str_in, " " );
echo $str_out;

Sebagai hasil dari pemrosesan ini dalam variabel $ str_out kita mendapatkan:

Teks saya dengan berbagai tag.

Dengan demikian, Anda dapat menentukan semua tag yang valid dalam string, sementara yang lainnya akan dihapus.

Artikel ini membahas cara termudah untuk menghapus tag dari string. Saat saya mempertimbangkan opsi lain, saya akan memperluas artikel ini. Saya akan senang jika Anda menyarankan opsi Anda untuk menyelesaikan masalah ini di komentar atau melalui email.

Ketika Anda menerima data dari pengguna, melalui yang sama, masuk akal untuk memproses data yang dikirimkan dari mereka dan menerima teks yang jelas pada output.

Bagaimana saya bisa melakukannya? cara yang berbeda, saya akan memberitahu Anda sekarang.

Bagaimana cara menghapus semua tag HTML dari string di PHP?

PHP memiliki fungsi yang disebut “ strip_tags". Ini memungkinkan Anda dengan cepat dan mudah menghapus semua tag HTML dari sebuah variabel.

Penerapan:

Halo Dunia!"; $ konten = strip_tags ($ konten); echo $ konten; // Akan menampilkan" Halo, dunia! "?>

Halo Dunia!

"; $ konten = strip_tags ($ konten,"

"); echo $ content; // Cetak" Halo, dunia!

Lorem ipsum dolor sit amet, conectetur adipiscing elit.
Vivamus sed lacus vel diam consectetur rhoncus et eget justo.

" ?>

Dalam hal ini, kami menyimpan tag

DAN ... Untuk tag yang memiliki tag akhir, Anda tidak perlu mendaftarkannya saat menyimpan.

catatan, fungsi ini tidak memeriksa validitas markup HTML, dan jika ada tag yang tidak ditutup, Anda berisiko kehilangan teks normal.

Bagaimana cara menghapus semua tag HTML dari string dalam JavaScript?

Dalam JavaScript, kami akan menulis fungsi kecil kami sendiri, yang dengannya kami selanjutnya akan memproses data yang diterima.

Penerapan:

Contoh ini berfungsi pada variabel tertentu yang diberikan, tetapi Anda dapat memodifikasinya agar sesuai dengan konten yang diterima, misalnya, dari bidang input.

Benar-benar semua orang dihadapkan dengan tugas membersihkan html dari tag yang tidak perlu.

Hal pertama yang terlintas dalam pikiran adalah menggunakan fungsi php strip_tags():
string strip_tags (string str [, string allowable_tags])

Fungsi mengembalikan string yang dilucuti dari tag. Tag yang tidak boleh dihapus akan diteruskan sebagai argumen allowable_tags. Fungsinya berfungsi, tetapi tidak sempurna, secara halus. Sepanjang jalan, tidak ada pemeriksaan untuk validitas kode, yang mungkin memerlukan penghapusan teks yang tidak termasuk dalam tag.
Pengembang proaktif tidak tinggal diam - fungsi yang ditingkatkan dapat ditemukan di internet. Strip_tags_smart adalah contoh yang bagus.

Apakah akan menggunakan solusi yang sudah jadi atau tidak adalah pilihan pribadi programmer. Kebetulan paling sering saya tidak memerlukan penangan "universal" dan lebih mudah untuk membersihkan kode dengan ekspresi reguler.

Apa yang menentukan pilihan metode pemrosesan ini atau itu?

1. Dari sumber bahan dan kompleksitas analisisnya.
Jika Anda perlu memproses htmp-teks yang cukup sederhana, tanpa tata letak yang mewah, sejelas hari :), maka Anda dapat menggunakan fungsi standar.
Jika teks memiliki kekhasan tertentu yang perlu diperhitungkan, maka di sinilah penangan khusus ditulis. Beberapa mungkin hanya menggunakan str_replace. Sebagai contoh:

$ s = array ("â € ™" => "' ", // Apostrof kanan (mis. di I" m)
"â € " => "“ ", // Tanda pidato pembuka
"â €“ "=>" - ", // Tanda hubung panjang
"â €" => "” ", // Tanda pidato penutup
"Ã" => "é", // e aksen lancip
chr (226). chr (128). chr (153) => "’ ", // Apostrof kanan lagi
chr (226). chr (128). chr (147) => "-", // Tanda hubung panjang lagi
chr (226). chr (128). chr (156) => "“ ", // Tanda pidato pembuka
chr (226). chr (128). chr (148) => "-", // M tanda hubung lagi
chr (226). chr (128) => "” ", // Tanda bicara kanan
chr (195). chr (169) => "é", // e akut lagi
);

foreach ($ s sebagai $ jarum => $ ganti)
{
$ htmlText = str_replace ($ jarum, $ ganti, $ htmlText);
}

Lainnya mungkin didasarkan pada ekspresi reguler ... Sebagai contoh:

Fungsi getTextFromHTML ($ htmlText)
{
$cari = larik(""

$ganti = array("",
"",
"",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr (161),
chr (162),
chr (163),
chr (169),
"chr (\\ 1)");

Kembalikan preg_replace ($ pencarian, $ ganti, $ htmlText);
}
(Pada saat-saat seperti itu, kemampuan preg_replace untuk bekerja dengan array sebagai parameter lebih menyenangkan dari sebelumnya). Jika perlu, Anda melengkapi array dengan pelanggan tetap Anda. Misalnya, konstruktor regex ini dapat membantu Anda dalam mengkompilasinya. Pengembang pemula mungkin menemukan artikel "Semua tentang tag HTML. 9 Ekspresi Reguler untuk menghapus tag HTML" berguna. Lihat contoh di sana, analisis logikanya.

2. Dari volume.
Volume berhubungan langsung dengan kompleksitas analisis (dari paragraf sebelumnya). Sejumlah besar teks meningkatkan kemungkinan bahwa, mencoba meramalkan dan membersihkan semuanya dengan pelanggan tetap, Anda mungkin melewatkan sesuatu. Dalam hal ini, metode pembersihan "multi-tahap" cocok. Yaitu, pertama-tama bersihkan, katakanlah, menggunakan fungsi strip_tags_smart (kami tidak menghapus kode sumber untuk berjaga-jaga). Kemudian kami secara selektif memindai sejumlah teks untuk mengidentifikasi "anomali". Nah, kami "membersihkan" anomali dengan jalur reguler.

3. Dari apa yang ingin Anda dapatkan sebagai hasilnya.
Algoritma pemrosesan dapat disederhanakan dengan cara yang berbeda tergantung pada situasinya. Kasus yang saya jelaskan di salah satu artikel sebelumnya menunjukkan hal ini dengan baik. Biarkan saya mengingatkan Anda bahwa teks ada di div, di mana, selain itu, ada div lain dengan " remah roti", iklan adsense, daftar artikel serupa. Ketika menganalisis sampel artikel, ditemukan bahwa artikel tersebut tidak mengandung gambar dan hanya dibagi menjadi paragraf menggunakan. Agar tidak membersihkan" div "utama" dari hal-hal asing, Anda dapat menemukan semua paragraf (dengan Simple HTML DOM Parser sangat sederhana) dan menggabungkan isinya, jadi sebelum Anda membuat pembersihan tetap, lihat apakah Anda bisa bertahan dengan sedikit darah.

Secara umum, antara pendukung penguraian kode html, murni berdasarkan ekspresi reguler, dan penguraian, yang didasarkan pada analisis struktur DOM dokumen, holivar nyata muncul di web. Misalnya, meluap. Tidak bersalah pada pandangan pertama

JavaScript diblokir di browser Anda. Harap aktifkan JavaScript agar situs berfungsi!

(PHP 3> = 3.0.8, PHP 4, PHP 5)

strip_tags- Menghapus tag HTML dan PHP dari string

Keterangan

rangkaian strip_tags(string str [, string allowable_tags])

Fungsi ini mengembalikan string str dari mana tag HTML dan PHP telah dihapus. Untuk menghapus tag, otomat digunakan, mirip dengan yang digunakan dalam fungsi fgetss () .

Argumen kedua opsional dapat digunakan untuk menentukan tag yang tidak boleh dihapus.

Komentar: Argumen allowable_tags telah ditambahkan di PHP 3.0.13 dan PHP 4.0b3. Mulai PHP 4.3.0, komentar HTML juga dihapus.

Perhatian

Karena strip_tag() tidak memeriksa kebenaran kode HTML, tag yang tidak lengkap dapat menyebabkan penghapusan teks yang tidak termasuk dalam tag.

Contoh 1. Contoh penggunaan strip_tag()
$teks = "

Gugus kalimat.

Beberapa teks lagi "; echo strip_tags ($ teks); echo" \ n \ n ------- \ n "; // jangan hapus

gema strip_tags ($ teks, "

"); // Mengizinkan ,,echo strip_tags ($ teks, " ");

Contoh ini akan menampilkan:

Gugus kalimat. Beberapa teks lagi -------

Gugus kalimat.

Beberapa teks lagi

Perhatian

Fungsi ini tidak mengubah atribut tag yang ditentukan dalam argumen allowable_tags, termasuk gaya dan onmouseover.

Sejak PHP 5.0.0 strip_tag() aman untuk memproses data dalam bentuk biner.

Fungsi ini memiliki kelemahan yang signifikan - ini adalah menempelkan kata-kata saat menghapus tag. Selain itu, fungsi tersebut memiliki kerentanan. Fungsi alternatif yang analog dengan strip_tags:

c "* -" kotor "html diproses dengan benar ketika simbol dapat ditemukan dalam nilai atribut tag< >* - html yang rusak diproses dengan benar * - komentar, skrip, gaya, PHP, Perl, kode ASP, tag MS Word, CDATA terpotong * - teks secara otomatis diformat jika mengandung kode html * - perlindungan terhadap pemalsuan seperti: " peringatan ("hai") script> "* * @param string $s * @param array $ allowable_tags Array tag yang tidak akan dipotong * Contoh:" b "- tag akan tetap dengan atributnya," "- tag akan tetap tanpa atribut * @param bool $ is_format_spaces Format spasi dan jeda baris? * Teks keluaran (polos) sedekat mungkin dengan teks input di browser. * Dengan kata lain, ia secara cerdas mengonversi teks / html ke teks / biasa. * Teks diformat hanya jika ada tag yang telah dilucuti. * Array @Param $ pair_tags array nama tag berpasangan yang akan dihapus bersama dengan konten * lihat nilai default * array @param $ para_tags array nama tag berpasangan, yang akan diperlakukan sebagai paragraf (jika $ is_format_spaces = true) * lihat default * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author Nasibullin Rinat, http: //orangetie.ru/ * @charset ANSI * @versi 4.0.14 * / function strip_tags_smart (/ * string * / $ s, array $ allowable_tags = null, / * boolean * / $ is_format_spaces = true, array $ pair_tags = array ("script", "style", "map", "iframe", "frameset", "object", "applet", "co mment "," tombol "," textarea "," pilih "), array $ para_tags = array (" p "," td "," th "," li "," h1 "," h2 "," h3 ", "h4", "h5", "h6", "div", "form", "title", "pre")) (// kembali strip_tags ($ s); static $ _callback_type = false; static $ _allowable_tags = array(); static $ _para_tags = array(); #ekspresi reguler untuk atribut tag #memperbaiki proses HTML yang kotor dan rusak dalam rangkaian karakter UTF-8 byte tunggal atau multibyte! static $ re_attrs_fast_safe = "(?!) #pernyataan, yang mengikuti setelah tag #atribut yang benar (?> [^>" \ "] + | (?<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>] * + "; if (is_array ($ s)) (if ($ _callback_type ===" strip_tags ") ($ tag = strtolower ($ s); if ($ _allowable_tags) (#tag dengan atribut if (array_key_exists ($ tag, $ _allowable_tags)) mengembalikan $ s; #tag tanpa atribut jika (array_key_exists ("<" . $tag . ">", $ _allowable_tags)) (jika (substr ($ s, 0, 2) ===""; if (substr ($ s, -2) ===" /> ") kembali"<" . $tag . " />"; kembali"<" . $tag . ">";)) if ($ tag ===" br ") kembali" \ r \ n "; if ($ _para_tags && array_key_exists ($ tag, $ _para_tags)) kembali" \ r \ n \ r \ n "; kembali "";) trigger_error ("Jenis panggilan balik tidak diketahui" ". $ _callback_type." "!", E_USER_ERROR);) if (($ pos = strpos ($ s, "<")) === false || strpos($s, ">", $pos) === false) #speed improve (#tag tidak ditemukan return $s;) $ length = strlen ($s); #unpaired tags (pembukaan, penutup,! DOCTYPE, MS Word namespace) $ re_tags = "~: * +)?) #1". $Re_attrs_fast_safe."> ~ SxSX "; $pola = array(" /<([\?\%]) .*? \\1>/ sxSX ", # PHP tertanam, Perl, kode ASP" /<\!\\]>/ sxSX ", # blok CDATA #" /<\!\[ [\x20\r\n\t]* .*? \]>/ sxSX ", #: TIDAK DIGUNAKAN: Tag MS Word seperti "/<\!--.*?-->/ sSX ", # komentar #MS Word tag like"", # eksekusi kode bersyarat untuk tipe IE""# eksekusi kode bersyarat untuk tipe IE""# lihat http://www.tigir.com/comments.htm" /<\! (?:--)?+ \[ (?>[^ \] "\"] + | "[^"] * "| \" [^ \ "] * \") * \] (?: -)? +> / sxSX ",); if ($ pair_tags) (# tag berpasangan dengan konten: foreach ( $ pair_tags sebagai $ k => $ v) $ pair_tags [$ k] = preg_quote ($ v, "/"); $ pola = "/<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . ">/ sxSX ";) #d ($ pola); $ i = 0; # perlindungan loop $ max = 99; while ($ i< $max) { $s2 = preg_replace($patterns, "", $s); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($i == 0) { $is_html = ($s2 != $s || preg_match($re_tags, $s2)); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($is_html) { if ($is_format_spaces) { /* В библиотеке PCRE для PHP \s - это любой пробельный символ, а именно класс символов [\x09\x0a\x0c\x0d\x20\xa0] или, по другому, [\t\n\f\r \xa0] Если \s используется с модификатором /u, то \s трактуется как [\x09\x0a\x0c\x0d\x20] Браузер не делает различия между пробельными символами, друг за другом подряд идущие символы воспринимаются как один */ #$s2 = str_replace(array("\r", "\n", "\t"), " ", $s2); #$s2 = strtr($s2, "\x09\x0a\x0c\x0d", " "); $s2 = preg_replace("/ [\x09\x0a\x0c\x0d]++ | <((?i:pre|textarea))" . $re_attrs_fast_safe . "(? .+? <\/(?i:\\1)" . $re_attrs_fast_safe . ">\ K / sxSX "," ", $ s2); if (preg_last_error()! == PREG_NO_ERROR) ($ i = 999; break;)) # array tag yang tidak akan dipotong jika ($ allowable_tags) $ _allowable_tags = array_flip ($ allowable_tags); # tag berpasangan yang akan diperlakukan sebagai paragraf if ($ para_tags) $ _para_tags = array_flip ($ para_tags);)) #if #tags memproses if ($ is_html) ($ _callback_type = "strip_tags"; $ s2 = preg_replace_callback ($ re_tags, __FUNCTION__, $ s2); $ _callback_type = false; if (preg_last_error ()! == PREG_NO_ERROR) ($ i = 999; break;)) if ($ s === $ s2) break ; $ s = $ s2; $ i ++;) # while if ($ i> = $ max) $ s = strip_tags ($ s); # terlalu banyak siklus untuk diganti ... if ($ is_format_spaces && strlen ($ s)! = = $ length) (#menghapus duplikat spasi $ s = preg_replace ("/ \ x20 \ x20 ++ / sSX", "", trim ($ s)); #hapus spasi sebelum dan sesudah baris baru $ s = str_replace (array ("\ r \ n \ x20", "\ x20 \ r \ n"), "\ r \ n", $ s); #ganti 3 dan lebih banyak baris baru menjadi 2 baris baru $ s = preg_replace ("/ [ \ r \ n] (3,) + / sSX "," \ r \ n \ r \ n ", $s); ) kembalikan $s; )?>