ugrás a tartalomhoz

preg_replace-el html tartalom szűrése

Jazoja · 2011. Szep. 8. (Cs), 21.37
HTML FORM-tól kapott HTML tegeket is tartalmazó szöveget szeretnék szűrni.

A probléma abból adódik, hogy a nicEdit WYSIWYG szövegszerkesztő böngészőnként máshogy viselkedik.
Opera alatt automatikusan <p> tegekkel tagolja a szöveget, Chrome alatt <div> tegekkel, Firefox alatt meg sortörésekkel.
A gond viszont ott van, hogy a tartalom mentése után a weboldalon ezek máshogy jelennek meg, ezért valamilyen módon a felesleget el kéne tüntetnem belőle.

Az alábbi HTML szerkezet helyes, mert minden kép körül van egy hivatkozás, és grafikai okokból egy div is van rajta:
<div><a href><img src=""/></a><div>

A sima szövegről (ami több hivatkozást is tartalmazhat) le kell szedni:
<div>(Szöveg<a href>Szöveg</a>Szöveg)*<div>

Viszont ha írok egy regex-et ez utóbbira, az le fogja szedni ez előbbiről is.

Hogyan tudom megcsinálni, hogy az img teget NEM tartalmazó stringeket hagyja békén?
 
1

Szerkesztő

Poetro · 2011. Szep. 8. (Cs), 22.10
Legjobb megoldás, ha más WYSIWYG szerkesztőt használsz, amit be tudsz állítani, hogy mikor milyen elemet jelenítsen meg, ne csak úgy hasraütésre valamelyiket. A másik dolog, ha már van egy HTML dokumentumod, akkor azt ne reguláris kifejezéssel módosítsd, arra valók a DOM függvények, illetve van rá rengeteg keretrendszer, amivel kényelmesebbé tudod tenni a dolgodat. Ilyen keretrendszerek: QueryPath, phpQuery, PHP Simple HTML DOM Parser, illetve használhatod a PHP beépített DOM függvényeit. Reguláris kifejezéseket erre a témára semmiképp nem ajánlanék.
2

DOM függvények

Jazoja · 2011. Szep. 8. (Cs), 22.16
Köszönöm, utána fogok nézni ezeknek, nem is tudtam, hogy erre már ilyen sok megoldás van.
Más WYSIWYG editort tudsz ajánlani? Én csak nicEdit-et találtam használhatónak.
3

CKEditor, TinyMCE

Poetro · 2011. Szep. 8. (Cs), 22.18
CKEditor, TinyMCE
4

nicEdit

Poetro · 2011. Szep. 8. (Cs), 22.24
Azért ez elmond valamit:
Version: 0.9 r23 - January 4th, 2009

Azaz az utolsó változat több mint két és fél éves, és még nem is érte el az 1.0-t.
5

WYSIWYG

Jazoja · 2011. Szep. 8. (Cs), 22.33
Drupal-nál tudom, hogy ezeket könnyen a rendszerbe lehet illeszteni, de WP alatt fejlesztek frontendre.
Anno a többiről azt olvastam, hogy nehéz frontendbe integrálni, nicEditor-hoz meg pár sor elég volt és már működött is.
Igaz, azóta kellett hekkelni rajta, hogy minden úgy működjön ahogy szeretném. (az időközben kiderült hülyeségekről meg nem is beszélve...)
6

WP

Poetro · 2011. Szep. 8. (Cs), 22.53
A WP tudtommal alapból TinyMCE-t használ, sőt annak is valami testreszabott változatát. Azzal mi a probléma?
7

TinyMCE

Jazoja · 2011. Szep. 8. (Cs), 22.58
Anno valahol azt olvastam, hogy nehéz frontendbe integrálni, volt aki többször megcsinálta, de a folyamatos változtatásokból elege lett és abbahagyta.
Ennyi, én már utána nem is kísérleteztem vele, nicEdit-tel indultam el, és eddig nagyjából minden rendben működött is.
8

WP

Poetro · 2011. Szep. 8. (Cs), 23.07
És szerinted a WordPress-ben nincs rá valami függvény, ami megoldja neked az egész integrálást, amit ráadásul frissítenek minden WP verzióval? Valahogy ők is megoldották. Ráadásul egyébként se nagy ördöngösség, sőt az utóbbi 1-2 évben olyan nagyot nem is változtak már ezek a dolgok. Ugyan még sose használtam WP-t, de egyből megtaláltam a függvényt: wp_tiny_mce valamint the_editor, újabb változatokban pedig wp_editor. Bár én úgy látom ez a WP egy egész nagy shiz, mivel kb. lehetetlen dokumentációt találni hozzá.
9

WP

Jazoja · 2011. Szep. 8. (Cs), 23.58
:-) Én is így gondolom (néha), de a megrendelő ezt ismeri és nem igazán akar váltani.
Dokumentációt azért sztem lehet találni hozzá, bár én se mindig találom meg elsőre ami kell.
Egyébként WP elég népszerű, valszeg nem véletlenül.
Köszi, hogy megkerested, előbb-utóbb valszeg én is ezt tettem volna.
Igazából mai napig nem nagyon volt gond nicEdit-tel, de most, hogy tesztelem más böngészőkkel, egyre viccesebbnek tűnik. IE8-ban pl a tegeket nagybetűssé teszi.
PHP/JavaScript/WP programozást kb 2 hónapja tanulom, sok dologra még nem volt időm...
10

codex.wordpress.org

tiku I tikaszvince · 2011. Szep. 9. (P), 07.03
Azért a szinte lehetetlen kifejezést egy cseppet erősnek érzem ;) A WordPress dokumentációja http://codex.wordpress.org/ címen található. Ott megtalálható a fejlesztőknek szóló dokumentáció. Innen elérhető a használható függvények listája, a Plugin API leírása is.
11

Keresés

Poetro · 2011. Szep. 9. (P), 09.51
Nade hogyan keresel benne. Miért ha beírok a fenti keresőbe egy függvénynevet, akkor mindent kidob a találatok között, épp csak a referencia oldalt nem. Valamint a fenti függvények EGYIKE SEM szerepel a referencia függvény listában, holott része a rendszernek, elvégre a PHP fájlokból vettem a függvények nevét.
13

jogos

tiku I tikaszvince · 2011. Szep. 9. (P), 10.13
Ez a kereső probléma valóban jogos. Én már rászoktam arra, hogy WP-t IDE-ben fejlesztek, ahol megoldott az, hogy a hivatkozott függvény nevére kattintva elnavigál magához a függvényhez. A WP kódja szerintem elég jól dokumentált, olvasható, szóval érdemes nem csak a codex-et vizsgálni, hanem magát a tényleges kódot is.
14

WP + TinyMCE

Jazoja · 2011. Szep. 10. (Szo), 18.09
Nekiálltam google-n keresni WP+frontend+tinymce témában, de a találatok 90%-a használhatatlan vagy nem működő kódokat adott. Végül ott hagytam abba, mikor több fejlesztő is leírta, hogy eddig milyen kód működött nála, de 3.2 óta megint nem működik...
Itt van egy link, ahol leírják azt is, hogy 3.2-ben mi változott, de a végén ott szerepel, hogy a 3.3-ban valszeg megszűnik a wp_tiny_mce()

Ehhez képest nicEdit-nek csak egy textarea kellett meg 2 sor JavaScript (egyikkel beemeltem, másikkal elindítottam)

Na mindjárt megnézem a lineket amit küldtél.
15

szinte lehetetlen

Jazoja · 2011. Szep. 10. (Szo), 18.12
Miért, ki mondta hogy "szinte lehetetlen"?
12

Minden az igényektől függ. Én

Hidvégi Gábor · 2011. Szep. 9. (P), 10.02
Minden az igényektől függ. Én TinyMCE-t használtam a kezdetektől, az tud ilyeneket, hogy <p>-t <br>-re cserél, kiszűri a nem kívánt attribútumokat és tag-eket, Word-ből beillesztett szöveget képes feldolgozni stb.

A magam részéről szeretek az ügyfeleimnek a szükséges legkevesebb kontrollt adni szövegszerkesztés szerint, mert hajlamosak két perc alatt úgy szétbarmolni az oldalt, hogy a látogatók sírva menekülnek. Egyszer az egyik lelkendezve felhívott, hogy a konkurencia oldalán micsoda megoldásokat látott, különböző színű és nagyságú betűk, animálva, mondtam neki, hogy saját érdekében felejtse el ezeket, nem vagyok hajlandó tescos reklámújságot csinálni a szépen megdizájnolt oldalából. Szóval nálam nagyjából a következő gombok vannak fenn: szövegstílus (cím, szöveg), félkövér, link, kép beszúrása, felsorolás.

Próbáltam az újabb verziókat is, de aztán rájöttem, hogy fölösleges, mert a régebbiek is már megbízhatóan működnek, ráadásul sokkal gyorsabbak. Megnéztem, amit használok, 2006-ban készült.