Manipulare html din php

Ce librarie folosit pentru manipularea continutului de format html? As avea nevoie de

  • search cu path-uri gen jquery
  • modificare de elemente (aduagare, scoatere, etc). schimbare atribute…si tot asa

De mult foloseam DomDocument , dar tindea sa fie greoi (adica mult cod scris) pentru chestii simple.

1 Like

Nu am idee, dar daca o sa faci un astfel de modul, m-ar interesa si pe mine.

Eu am gasit pQuery, l-ai incercat ?
Eventual pentru marirea performantei incearca php7 sau hhvm, sau amandoua combinate :smiley: .

Eu am mai folosit componenta DomCrawler din Symfony. Poți face query-uri atât cu expresii XPath cât și CSS selectors.

3 Likes

Funny fact: prima fraza la DomCrwaler:

While possible, the DomCrawler component is not designed for manipulation of the DOM or re-dumping HTML/XML.

http://simplehtmldom.sourceforge.net/ m-a ajutat in tot ce am avut nevoie pana acum

Am folosit Zend DOM si DomCrawler .

Fiind mai junior de fel, apelez la voi ca să mai învăț și eu. La ce ai folosi o astfel de unealtă?

Ca sa nu te chinui sa iti faci propriul astfel de utilitar si sa nu apelezi la JS (cu sau fara node), fiindca sunt useri care dezactiveaza **Javascript**ul, in browser.

Inseamna ca nu ai inteles nimic.

Nu ai de ce sa apelezi la JS. Aici era vorba de PHP, si in JS nici nu ar avea logica sa maniuplezi codul HTML, acolo lucrezi direct pe DOM, iar faptul ca ai pus in paranteza “(cu sau fara node)” nu stiu la ce te-ai referit, dar daca te-ai referit la node.js, vreau sa te anunt ca nu are nicio legatura node.js cu manipularea codului HTML. Iar argumentul “fiindca sunt useri care dezactiveaza Javascriptul” e clar ca nu mai are nicio logica.

Raspunsul, de fapt, era atunci cand lucrezi cu cod HTML, sa poti selecta foarte usor anumite node-uri, sa preiei valorile de la atribute, continutul s.a.m.d. Daca intrebarea e cand ai nevoie sa manipulezi cod HTML, atunci un exemplu ar fi cand faci scraping/crawling sau cand ai de aface cu un editor WYSIWYG (TinyMCE) care iti salveaza cod HTML in baza de date,

Asa se intampla cand vorbesti doar din teorie, si nu din experienta.

3 Likes

Mersi frumos pentru explicație și pentru exemple, am priceput :).

Totuși nu cred că era nevoie să scrii rândurile alea în care te iei de @Sapioit. Puteai să ne explici frumos la amândoi exact ce era de explicat, fără să îi dai peste nas. Dacă cineva ți-ar fi adresat aceeași întrebare în viața reală ai fi făcut la fel? :slight_smile:

Sunt convins că ești un om agreabil în realitate, eu cred că poți face asta și în mediul real :).

2 Likes

In apararea lui @GarryOne , parte din vina ar fi a mea, pentru ca nu am explicat ce am dorit sa spun si am lasat loc de interpretari, in exprimarea folosita.

1 Like

Un mic follow-up.

Pana la urma am folosit tot DomDocument. Pentru usurinta debugului am folosit un dump_tree interesant: https://gist.github.com/Xeoncross/2721061

Eu l-am folosit pentru mici tunninguri de html:

  • eliminare <p> goale
  • eliminarea <img> din span-uri, si alte “mici” erori de html

In trecut l-am folosit pentru

  • identificare taguri imagini, widh/height si schimbarea src-ului in functie de novoie
  • inserarea de slot bannere in anumite zone in html
2 Likes

I-am dat un pic peste nas lui @Sapioit , ca urmare a unei perioade lungi in care am observat ca se avanta in a face multe posturi, in aproape mai toate subiectele care se discuta pe forum, indiferent daca are ceva important de spus sau nu. Nu am nimic cu el, am vazut ca in timp de 1-2 ani de cand s-a apucat de web design (poate chiar developing) a avansat destul de mult (felicitari), insa totusi ar fi bine sa pastram calitatea posturilor una cat mai intalta. Dupa cum au observat toti, sunt utilizatori pe forum cu experienta de 10+ ani, insa daca subiectul care se discuta, nu-l cunosc/stapanesc, nu se avanta in a posta, lasand locul celoralati mai pregatiti sa vina cu raspunsuri cat mai relevante. Cred ca o regula de aur, pe care ar trebui s-o respecte toti utilizatorii de forum-uri ar fi:
Inainte de a posta, intreaba-te: “Postul meu va aduce valoare acestui topic?”

Toate cele bune :slight_smile: .

5 Likes

####Multumesc, @GarryOne ! I needed that… Tind sa fac asta, cand devin confortabil pe un forum, uneori.

Si ca sa postez si ceva on-topic, poate ai un site care vrei sa aiba layout diferit, in functie de anumite variabile (dependente de utilizator). Cum s-a mentionat, se poate folosi pentru verificarea elementelor deja construite si adaugarea sau eliminarea de elemente.

Deasemenea, ai putea sa faci website scrapping (Incepi prin a face rost de codul HTML, spre exemplu $html = file_get_contents('http://a.site/page');, apoi manipulezi acel HTML), ori sa modifici un site deja existent, automat, fara a fi nevoie ca cineva sa stea sa faca fiecare lucru in parte.

Spre exemplu, vrei ca pornind de la codul html al mailului trecut (pe care il ai in baza de date, sau pe disk) sa creezi automat codurile urmatoarelor mailuri, in functie de anumiti parametrii (spre exemplu, anumiti utilizatori sa aiba anumite elemente).

(Spre exemplu) @hash ai prefera sa scrii de mana (chiar si cu copy-paste) vre-o cateva sute de pagini care difera doar putin, una de alta, dar nu sunt doua identice? Si daca ar fi nevoie sa le modifici pe fiecare in parte, fiindca ai schimbat ceva important, undeva in pagina? Sau sa schimbi orientarea/ordinea catorva elemente?

Dar cum s-a mai spus, intre teorie si practica se afla si alte probleme si rezolvari.


Mai nou, mai toate editoarele WYSIWYG foloses Javascript, dar atunci cand nu ai neaparat input de la un utilizator, ori cand doresti ca procesarea sa se faca pe server, ai putea avea nevoie sa manipulezi html-ul din php.

1 Like