Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Gyakran felmerül az a feladat, hogy az összes vagy csak bizonyos html címkéket távolítsuk el egy karakterláncból, ahol lehetőséget kell biztosítani bármely oldal látogatójának új információk hozzáadására. A leggyakoribb példa egy vendégkönyv vagy egy megjegyzésrendszer egy webhelyen. Az így hozzáadott szöveg sok különböző címkét tartalmazhat, amelyeket véletlenül adnak hozzá a szöveg másolásakor, vagy szándékosan, hogy az üzenetet valahogy "nagyon eredetivé" tegyék. Érdemes megjegyezni azokat a rosszindulatú kísérleteket is, amelyek rosszindulatú kódot akarnak bevinni a webhelyre szkriptcímkékben, vagy arra irányuló kísérleteket, hogy szükségtelen címkékkel rontsák el az oldal elrendezését.

Minden ilyen esetben szükségessé válik a felesleges html címkék eltávolítása az új információk írása előtt.

Szöveg teljes tisztítása a html címkéktől

Az ilyen feladatokhoz gyakran használnak reguláris kifejezéseket, de ebben a cikkben megvizsgáljuk a legegyszerűbb módszert - a címkék eltávolítását a strip_tags php függvény segítségével. Ez a függvény egyszerűen eltávolítja a címkéket a paraméterben megadott karakterláncból.

$str_in = "

Az én szövegem innen különféle címkéket.

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

Az ilyen feldolgozás eredményeként a $str_out változóban címkék nélküli karakterláncot kapunk:

A szövegem különféle címkékkel.

* Érdemes megjegyezni, hogy a strip_tags függvény csak magukat a címkéket csíkozza le, tartalmukat a nyitó és záró címke közé hagyva.

Egyedi html címkék eltávolítása a szövegből

Néha csak bizonyos címkéket kell eltávolítania egy karakterláncból. Itt is a strip_tags függvényt fogjuk használni, de ezúttal a második (nem kötelező) paraméter a mentendő címkék.

Például egy karakterlánc feldolgozásakor csak hivatkozásokat kell hagynia:

$str_in = "

Az én szövegem innen különféle címkéket.

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

Az ilyen feldolgozás eredményeként a $str_out változóban a következőt kapjuk:

A szövegem különféle címkékkel.

Így megadhatja az összes érvényes címkét egy karakterláncban, míg az összes többit eltávolítja.


Ez a cikk a karakterlánc címkékből való törlésének legegyszerűbb módját tárgyalja. A többi lehetőséget figyelembe véve kibővítem ezt a cikket. Örülök, ha felajánlja a probléma megoldásának lehetőségeit a megjegyzésekben vagy e-mailben.

Amikor adatokat kap a felhasználóktól, ugyanazon keresztül, célszerű a tőlük továbbított adatokat feldolgozni, és tiszta szöveget kapni a kimeneten.

Hogyan tudom ezt megtenni különböző utak, most elmondom.

Hogyan lehet eltávolítani az összes HTML címkét egy karakterláncból PHP-ben?

A PHP-nek van egy strip_tags nevű függvénye. Ezzel gyorsan és egyszerűen eltávolíthatja az összes HTML-címkét egy változóból.

Végrehajtás:

Ebben az esetben elmentjük a címkéket

ÉS . A záró címkével rendelkező címkék esetében nem kell azt előírni a mentés során.

Kérjük, vegye figyelembe, hogy a funkció nem ellenőrzi a HTML-jelölés érvényességét, és ha vannak lezáratlan címkék, akkor fennáll az egyszerű szöveg elvesztésének kockázata.

Hogyan lehet eltávolítani az összes HTML-címkét egy karakterláncból JavaScriptben?

JavaScriptben megírjuk a saját kis függvényünket, melynek segítségével utólag feldolgozzuk a kapott adatokat.

Végrehajtás:

function strip(html) ( var tmp = document.createElement("div"); tmp.innerHTML = html; return tmp.textContent || tmp.innerText; ) var content = strip("Szia, világ!");

Ez a példa egy adott változón működik, de a fogadott tartalomhoz újrakészítheti, például a beviteli mezőből.

Abszolút mindenki szembesül azzal a feladattal, hogy megtisztítsa a html-t a felesleges címkéktől.

Az első dolog, ami eszünkbe jut, a strip_tags() php függvény használata:
string strip_tags (string str[, karakterlánc megengedett_címkék])

A függvény címkéktől megfosztott karakterláncot ad vissza. Az Allowable_tags olyan címkéket ad át, amelyeket nem szabad eltávolítani. A funkció működik, de enyhén szólva tökéletlen. Útközben nem ellenőrzik a kód érvényességét, ami a címkékben nem szereplő szöveg eltávolításához vezethet.
A kezdeményezés fejlesztői nem ültek tétlenül – továbbfejlesztett funkciókat találhat a hálózaton. jó példa a strip_tags_smart .

Az, hogy kész megoldásokat használ-e vagy sem, a programozó személyes döntése. Így történt, hogy legtöbbször nincs szükségem "univerzális" kezelőre, és kényelmesebb a kódot reguláris kifejezésekkel megtisztítani.

Mi határozza meg az egyik vagy másik feldolgozási mód kiválasztását?

1. A forrásanyagból és elemzésének összetettségéből.
Ha elég egyszerű htmp szövegeket kell feldolgoznia, minden díszes elrendezés nélkül, tiszta, mint a nap :), akkor használhatja a standard funkciókat.
Ha a szövegeknek vannak bizonyos jellemzői, amelyeket figyelembe kell venni, akkor itt speciális kezelőket írnak. Néhányan csak az str_replace parancsot használják. Például:

$s = array("’" => "'", // Jobb oldali aposztróf (pl. I"m-ben)
"“" => """, // Megnyitó beszédjel
"–" => "—", // Hosszú kötőjel
"â€" => """, // Záró beszédjel
"Ã" => "é", // e akut akcentus
chr(226) . chr(128) . chr(153) => "’", // Ismét jobb-aposztróf
chr(226) . chr(128) . chr(147) => "—", // Ismét hosszú kötőjel
chr(226) . chr(128) . chr(156) => """, // Megnyitó beszédjel
chr(226) . chr(128) . chr(148) => "—", // M kötőjel ismét
chr(226) . chr(128) => """, // Jobb beszédjel
chr(195) . chr(169) => "é", // e ismét akut
);

foreach ($s mint $tű => $csere)
{
$htmlSzöveg = str_csere($tű, $csere, $htmlSzöveg);
}

Mások alapulhatnak reguláris kifejezések. Mint például:

GetTextFromHTML($htmlText) függvény
{
$search = array (""]*?>.*?"si", // JavaScript eltávolítása
""]*?>.*?"si", // Stílusok eltávolítása
""]*?>.*?"si", // Távolítsa el az xml-címkéket
"""si", // Távolítsa el a HTML-címkéket
""([\r\n])[\s] "", // Szóközök eltávolítása
""&(quot|#34);"i", // HTML speciális karakterek cseréje
""&(amp|#38);"i",
""&(lt|#60);"i",
""&(gt|#62);"i",
""&(nbsp|#160);"i",
""&(iexcl|#161);"i",
""&(cent|#162);"i",
""&(pound|#163);"i",
""&(másolat|#169);"i",
""(\d);"e"); // php-ként írd

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

Return preg_replace($keresés, $csere, $htmlszöveg);
}
(Ilyenkor soha nem volt még szórakoztatóbb, hogy a preg_replace paramétert tömbökkel paraméterként vehetjük fel.) Ha szükséges, kiegészíti a tömböt reguláris kifejezéseivel. Például ez a reguláris kifejezés-konstruktor segíthet ezek összeállításában. A kezdő fejlesztők hasznosnak találhatják a "Mindent a HTML-címkékről. 9 reguláris kifejezés a HTML-címkék eltávolításához" című cikket. Keress ott példákat, elemezd a logikát.

2. Kötetekből.
A kötetek közvetlenül kapcsolódnak az elemzés összetettségéhez (az előző bekezdésből). Nagyszámú szövegek használata növeli annak valószínűségét, hogy miközben megpróbál mindent előre látni és megtisztítani reguláris kifejezésekkel, valamit kihagy. Ebben az esetben a "többlépcsős" tisztítás módszere megfelelő. Azaz először töröld ki például a strip_tags_smart függvénnyel (a forrásokat nem töröljük minden esetre). Ezután szelektíven átnézünk bizonyos számú szöveget, hogy azonosítsuk az "anomáliákat". Nos, reguláris kifejezésekkel "tisztítjuk" az anomáliákat.

3. Abból, amit ennek eredményeként meg kell szereznie.
A feldolgozási algoritmus a helyzettől függően többféleképpen egyszerűsíthető. Az egyik korábbi cikkben általam leírt eset jól mutatja ezt. Hadd emlékeztesselek arra, hogy az ott lévő szöveg egy div-ben volt, amiben ezen kívül volt egy div is a következővel: " zsemlemorzsa", adsense hirdetések, hasonló cikkek listája. Válogatott cikkek elemzésekor kiderült, hogy a cikkek nem tartalmaznak képeket, és egyszerűen bekezdésekre vannak osztva a segítségével. Annak érdekében, hogy ne tisztítsa meg a "fő" divet az idegen dolgoktól, nagyon könnyen megtalálhatja az összes bekezdést), és összerakhatja a tartalmukat.

Általánosságban elmondható, hogy a html-kód tisztán reguláris kifejezéseken alapuló elemzése és a dokumentum DOM-struktúrájának elemzésén alapuló elemzés támogatói között valódi holiwarok lobbannak fel a hálózaton. Itt például a túlcsordulásnál. Első látásra ártatlan

A JavaScript le van tiltva a böngészőjében. Engedélyezze a JavaScript használatát az oldal működéséhez!

strip_tags

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

strip_tags – HTML és PHP címkék eltávolítása karakterláncból Leírás string strip_tags (string str [, karakterlánc megengedett_címkék])

Ez a függvény visszaadja az str stringet a HTML és PHP címkék eltávolításával. A címkék eltávolításához egy automatát használnak, hasonlóan az fgetss() függvényhez.

Az opcionális második argumentum olyan címkék megadására használható, amelyeket nem szabad eltávolítani.

Megjegyzés: Az allow_tags argumentum a PHP 3.0.13-ban és a PHP 4.0b3-ban lett hozzáadva. A PHP 4.3.0-tól kezdve a HTML-megjegyzések is törlődnek.

Figyelem

Mivel a strip_tags() nem ellenőrzi a HTML-kódot, a hiányos címkék a címkézetlen szöveg eltávolítását eredményezhetik.

1. példa Strip_tags() példa $text = "

Bekezdés.

Még néhány szöveg"; echo strip_tags($text); echo "\n\n-------\n"; // ne törölje

echo strip_tags($szöveg, "

"); // Lehetővé teszi ,, echo strip_tags($text, " ");

Ez a példa a következőt fogja kiadni:

Bekezdés. Még egy kis szöveg -------

Bekezdés.

Még egy kis szöveg

Figyelem

Ez a függvény nem változtatja meg az allowable_tags argumentumban megadott címkék attribútumait, beleértve a stílust és az onmouseovert.

A PHP 5.0.0-tól kezdve a strip_tags() biztonságosan kezeli az adatokat bináris formában.

Ennek a funkciónak van egy jelentős hátránya - ez a szavak ragasztása a címkék törlésekor. Ezenkívül a funkciónak vannak sebezhetőségei is. A strip_tags-hez hasonló alternatív függvény:

Lásd még a funkció leírását

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: