Szöveg tisztítása a felesleges HTML-címkékből - elemzés A - Z. A HTML sor címkéinek eltávolítása a PHP PHP-ben A HTML-címkék eltávolítása a sorból
A HTML tisztításával a felesleges címkékből, abszolút minden szemben van.
Az első dolog, ami eszébe jut, hogy használja a PHP-funkciót Strip_Tags ():
Strip_tags (string str [, string alladagle_tags)))
A funkció a címkékből megtisztított karakterláncot ad vissza. Azok a címkék, amelyeket nem kell törölni, az engedélyezett_tags argumentumként szolgál. A funkció működik, de enyhén, tökéletlen. A kurzus során nincs ellenőrzés a kód érvényességének, ami magában foglalhatja a címkékben nem szereplő szöveg eltávolítását.
A kezdeményezések fejlesztői nem teljesítették a kezét - a hálózaton találhatók módosított funkciókat. Jó példa a sík_tags_smart.
Alkalmazzon vagy ne alkalmazzon készenléti megoldásokat - a programozó személyes kiválasztása. Ez így történt, hogy leggyakrabban nem igényelnek "univerzális" kezelőt, és kényelmesebb, hogy rendszeresen tisztítsa meg a kódot.
Mitől függ az egyik vagy másik feldolgozási módszer kiválasztása?
1. A forrás anyagából és az elemzés összetettségéből.
Ha elég egyszerű HTMP-szöveget kell kezelnie, bármilyen trükkös elrendezés nélkül, naponta :), használhat szabványos funkciókat.
Ha vannak bizonyos jellemzők a figyelembe veendő szövegek, akkor speciális kézikönyveket írnak. Egyszerűen használható néhány str_replace. Például:
$ s \u003d tömb ("â € ™" \u003d\u003e "", // jobb oldali aposztróf (pl. i "m)
"â € œ" \u003d\u003e "", // nyitó beszédjel
"â €" "\u003d\u003e" - ", // hosszú kötőjel
"â €" \u003d\u003e "", // Bezáró beszédjel
"Ã" \u003d\u003e "É", // E akut akcentus
CHR (226). CHR (128). CHR (153) \u003d\u003e "", // jobb oldali apostróf
CHR (226). CHR (128). CHR (147) \u003d\u003e "-", // hosszú kötőjel újra
CHR (226). CHR (128). CHR (156) \u003d\u003e "" ", // beszédjel megnyitása
CHR (226). CHR (128). CHR (148) \u003d\u003e "-", // m kötőjel újra
CHR (226). CHR (128) \u003d\u003e "" ", // Jobb beszédjel
CHR (195). CHR (169) \u003d\u003e "É", // E akut újra
);
foreach ($ s, mint $ tű \u003d\u003e $ csere)
{
$ Htmltext \u003d str_replace ($ tű, $ csere, $ htmltext);
}
Mások alapulhatnak rendszeres kifejezések. Mint például:
Funkció gettextfromhtml ($ htmltext)
{
$ keresés \u003d tömb ("""SI", // eltávolítsa a JavaScriptet
"""Si", // Távolítsa el a stílusokat
""
""<[\/\!]*?[^<>] *?\u003e "SI", // eltávolítja a HTML-címkéket
"" ([\\ r \\ n]) [s] "", // eltávolítja a tereket
"" és (34. # 34); "i", // Cserélje ki a HTML speciális karaktereket
"" & (amp | # 38); "Én",
"" & (LT | # 60); "I",
"" & Gt | # 62); "I",
"" & Nbsp | # 160); "I",
"" És IEXCL | # 161); "I",
"" & (Cent | # 162); "I",
"" & (font | 163); "I",
"" & (Másolás | # 169); "I",
"" (d); "E"); // írj, mint php
$ csere \u003d tömb (",
"",
"",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
CHR (161),
CHR (162),
CHR (163),
CHR (169),
"CHR (\\\\ 1)");
RETURN PREG_REACH ($ SEARCH, $ csere, $ htmltext);
}
(Ilyen perceken azonban a preg_replace lehetősége örömmel fog működni a tömbökkel paraméterekként). Egy tömb, ha szükséges, kiegészíti a rendszeres szabályokat. Segíthet az összeállításukban, például ez a rendszeres kifejezések tervezõje. A kezdő fejlesztők hasznos cikkek lehetnek "minden a HTML-címkékről. 9 Rendszeres expressz a HTML-címkék csíkához". Nézd meg a példákat, elemezzük a logikát.
2. A kötetektől.
A mennyiségek közvetlenül kapcsolódnak az elemzés összetettségéhez (az előző bekezdésből). Számos szöveg növeli annak valószínűségét, hogy megpróbálja előrelátni és mindent tisztítani rendszeresen, akkor hiányozhat valamit. Ebben az esetben a "multistage" tisztítási módszer alkalmas. Azaz, világos első, mondjuk, a strip_tags_smart funkció (forráskód csak abban az esetben nem törli). Ezután szelektíven nézzen meg néhány szöveget az "anomáliák" azonosítására. Nos, "Rendszeresen" tisztítsa meg az anomáliát.
3. Az eredményeként meg kell szerezni.
A feldolgozó algoritmus különböző módon egyszerűsíthető a helyzet függvényében. Az előző cikkek egyikében leírt eset jól látható. Hadd emlékeztessem önöket, a szöveg csak a div - e, ahol volt még egy div „zsemlemorzsa” adsens reklám, egy listát a hasonló termékek. A cikkek kiválasztásának elemzése során azt találták, hogy a cikkek nem tartalmaznak mintákat, és egyszerűen megszakadnak a bekezdésekre. Annak érdekében, hogy ne tisztítsa meg a kívülállók "Main" osztását, megtalálja az összes bekezdéseket (az egyszerű HTML DOM parser nagyon egyszerű), és csatlakoztassa a tartalmát. Tehát a rendszeres tisztítás, nézd meg, lehetetlen az alacsony vérrel.
Általában a támogatói a HTML-kód elemzés alapján reguláris kifejezések, és az elemzés, amelynek alapja az elemzés a DOM dokumentum szerkezete, igazi holivars fellángolt a hálózaton. Itt például a túlfolton. Ártatlan
A bejövő adatok ellenőrzése és feldolgozása a programozás egyik közös feladata. PHP nyelv általában használt webes alkalmazások, ezért itt a leglényegesebb eltávolítása HTML a szövegből, mert a leginkább fogékonyak a harmadik fél injekciót. Ebben a cikkben szeretnék emlékeztetni Önt a régimódi stip_tags () és a zsetonjairól, és megoldásokat kínál a szekcionált HTML-címkék eltávolítására és egy pár hasznos bónuszra egyidejűleg.
Így. A HTML-címkék törlésének fő eszköze a szövegből a Strip_Tags () funkció. Átadjuk húr érték, és eltávolítja a HTML és a PHP címkéket, például:
$ s \u003d "
Bekezdés.
Még szöveg. ";echo strip_tags ($ s);
Ez a példa megjeleníti a karakterláncot:
Bekezdés. Még szöveg.
Érdemes megjegyezni, hogy a funkció a második (Választható, de hasznos) A paraméter, amelynek értéke egy karakterlánc, amelynek listája megengedett HTML-címkék, például:
$ s \u003d "
Bekezdés.
Még szöveg. ";Echo strip_tags ($ S "
Ez a példa megjeleníti a karakterláncot:
Bekezdés.
Még szöveg.
Véleményem szerint nagyon kényelmes. Mindazonáltal nem oldja meg az egyik fontos problémát - a szekcionált HTML-címkék törlésePéldául: szkript, noscript és stílus - a leggyakoribbak. Amikor el kell távolítanom az ilyen szakaszcímkéket, valamint a "< » и заканчивающиеся символом « > "A következő PHP-kódot használom:
$ p \u003d tömb (
"""Si",
"""Si",
"""Si",
""<[\/\!]*?[^<>] *?\u003e "Si",
);
$ R \u003d tömb ("", "", "", ");
$ s \u003d preg_replace ($ p, $ r, $ s);
Itt a $ p változó rendszeres kifejezéseket tartalmaz, és $ r egy tömb, hogy cserélje ki őket (Hiányzást használok). Csak a karakterláncban cserélje ki, és eltávolítjuk a HTML szemetet a szövegből.
Nyilvánvaló, hogy a két fenti döntés kombinálható. Kezdetben a rendszeres kifejezések révén cserélem, majd a Strip_Tags () és a Saját funkció a NOHTML ().
Végül néhány hasznos megoldást szeretnék kínálni. Tehát a szövegben jobb helyettesíteni a fület, a másik a böngésző értelmezésének eredménye azonos, és a baj kevésbé lesz, például:
$ s \u003d str_replace ("\\ t", "", $ s);
Ha nincs szükség stringtranszferekre, akkor is helyettesíthetők szóközökkel, például:
$ s \u003d str_replace (tömb ("\\ n", "\\ r"), "", $ s);
Az extra terekből megszabadulhat egy egyszerű rendszeres kifejezésből, például:
$ s \u003d preg_replace ("/ s + /", "", $ s);
$ s \u003d trim ($ s); // nem lesz felesleges
Mindentem van. Kösz a figyelmet. Sok szerencsét!
21: 56-kor. | Üzenet szerkesztése |
Van egy JavaScript blokkolva a böngészőben. Hagyja, hogy a JavaScript dolgozzon a webhelyen!
csíkos_tags
(PHP 3\u003e \u003d 3.0.8, PHP 4, PHP 5)
csíkos_tags - Törli a HTML és a PHP címkéket a sorbólLeírás
Húr csíkos_tags (String str [, string megengedhető_tags]))Ez a funkció visszaadja a string string, amelyből HTML és PHP címkék eltávolításra kerülnek. A címkék eltávolításához az automatikus használat hasonlít a funkcióhoz alkalmazott funkcióhoz. fgetss ().
Opcionális második érv használható olyan címkék jelzésére, amelyeket nem szabad törölni.
FigyelemMegjegyzés: Engedélyezhető_TAGS argumentumot adtunk a PHP 3.0.13 és PHP 4.0B3-hoz. HTML megjegyzéseket is töröltek a PHP 4.3.0.
Mint strip_tags () Nem ellenőrzi a HTML-kód helyességét, a befejezetlen címkék a címkékben nem szereplő szöveg eltávolításához vezethetnek.
1. példa Példa a használatra strip_tags ()
$ Szöveg \u003d "Bekezdés.
Egy kicsit több szöveg "; echo strip_tags ($ szöveg); echo" \\ n \\ n ------- \\ n "; // ne töröljeEcho strip_tags ($ szöveg, "
"); // Lehetővé teszi ,, Echo strip_tags ($ szöveg, " ");
Ez a példa kimutatja:
Bekezdés. Egy kicsit több szöveg -------
Bekezdés.
Egy kis szöveg
FigyelemEz a funkció nem módosítja az engedélyezett_tags argumentumban megadott tag attribútumokat, beleértve a stílust és az onmouseustant.
A PHP 5.0.0 strip_tags () Biztosítani kell az adatfeldolgozás bináris formában.
Ez a funkció jelentős hátránya van - ez a szavak ragasztása a címkék eltávolításakor. Ezenkívül a funkciónak sérülékenysége van. Alternatív tulajdonság analóg csík_tags:
C "* - A" piszkos "HTML-t megfelelően feldolgozzák, ha szimbólumok jelentkezhetnek a címke attribútum értékeiben< > * - Helyesen feldolgozott HTML * - Vágott megjegyzések, szkriptek, stílusok, php, perl, ASP kód, MS Word Taggy, CDATA * - szöveges automatikusan formátumok, ha HTML-kódot tartalmaz * - Hamkok elleni védelem: "<
Lásd még a funkció leírását is
Feladat Törölje az összes vagy csak bizonyos HTML-címkéket a sorból gyakran abban az esetben fordul elő, ahol szükség van lehetőség arra, hogy bármely látogató új információkat adjon hozzá. A leggyakoribb példa lehet vendégkönyv vagy megjegyzésrendszer a webhelyen. Az a szöveg, így hozzáadott tartalmazhat sok különböző címkét adunk véletlenül, amikor a másolás szöveget, vagy szándékosan, hogy egy üzenet valahogy „nagyon eredeti.” Érdemes megjegyezni ugyanazt és a rosszindulatú próbálkozást, hogy rosszindulatú kódot tegyen a szkript címkékben, vagy megpróbálja elrontani az oldal elrendezését extra címkékkel.
A felsorolt \u200b\u200besetekben az új információk rögzítése előtt szükséges, tisztítsa meg a felesleges HTML-címkékből.
A HTML-címkék szövegének teljes tisztítása
Gyakran előfordul, hogy rendszeres kifejezéseket használnak az ilyen feladatokhoz, de ebben a cikkben a legegyszerűbb módszert vizsgáljuk - a címkék törlése a PHP funkcióval Strip_tags segítségével. Ez a funkció egyszerűen törli a címkéket a paraméterben megadott karakterláncból.
$ str_in \u003d. " Az én szöveg tól től különféle Címkék.
$ str_out \u003d strip_tags ($ str_in);
echo $ str_out;
Ennek eredményeként a feldolgozás a $ str_out változóban kapunk egy karakterláncot:
A szövegem különböző címkékkel.
* Érdemes megjegyezni, hogy a strip_tags függvény eltávolítja csak a magukat a tagokat, így azok tartalma között a nyitó és záró tag.
Az egyes HTML-címkék eltávolítása a szövegből
Néha csak bizonyos címkét kell eltávolítania a karakterláncból. Itt is használjuk a Strip_Tags funkciót, de ezúttal a második (opcionális) paraméter jelzi a menteni kívánt címkéket.
Például egy karakterlánc feldolgozásakor csak linkeket kell hagynia:
$ str_in \u003d. " Az én szöveg tól től különféle Címkék.
$ str_out \u003d strip_tags ($ str_in, " "
);
echo $ str_out;
Ennek eredményeként a feldolgozás egy változó $ str_out kapunk:
A szövegem különböző címkékkel.
Így megadhatja az összes olyan címkét, amely megengedett a karakterláncban, míg mindenki más törlődik.
Ez a cikk a legegyszerűbb módja a címkékből történő tisztításának legegyszerűbb módja. Más lehetőségek figyelembevételével bővítem ezt a cikket. Örülök, hogy megoldást nyújt erre a feladatra megjegyzésekben vagy e-mailben.