Div content remote!
Moderatori: coditza, Emil, Moderatori
-
Adytzoo
- Junior Member
- Mesaje: 35
- Membru din: Vin Aug 01, 2008 11:27 am
- Localitate: Rosiorii de Vede
- Contact:
Div content remote!
Am site-ul zxczxczxczc.com de exemplu. cum fac sa extrag continutul div-ului cu id "div_div_div" in php, stiu ca e cu file get contents, dar cum se face, cu preg_match sau cum? nu vreau sa depind de chestia cu doc getelementbyid a php-ului pentru ca nu e suportata de toate serverele...
gresit!
getElementById este functie JavaScript.
cautare in stringuri, din PHP gasesti aici: http://php.net/manual/en/function.strpos.php
getElementById este functie JavaScript.
cautare in stringuri, din PHP gasesti aici: http://php.net/manual/en/function.strpos.php
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
matheuzzy scrie:cautare in stringuri, din PHP gasesti aici: http://php.net/manual/en/function.strpos.php
Extrage-mi si mie continutul div-ului #content cu functia sugerata de tine:
Cod: Selectaţi tot
<div id="header">
<h1>Heading</h1>
<div id="content">Content body</div>
</div>Stiu ca nu spuneai sa folosesti doar o singura functie sa preiei informatiile, dar tot nu e destul. Nici cu functiile de string-uri ale PHP-ului, nici regex.
@Adytzoo, uite cateva variante mai bune:
1. http://www.php.net/manual/en/book.dom.php
2. http://code.google.com/p/phpquery/
3. http://querypath.org/
4. http://simplehtmldom.sourceforge.net/
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Cod: Selectaţi tot
<?php
$html =<<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<div id="header">
<h1>Heading</h1>
<div id="content">Content body</div>
</div>
HTML;
$dom= new DOMDocument();
$dom->loadHTML($html);
$content = $dom->getElementById("content")->nodeValue;
echo $content; // Content bodyOpa. Io-te si "getElementById". NB: "getElementById" functioneaza doar daca documentul are un doctype declarat. Daca nu, iti regurgiteaza "null".
Abia acum am incercat DOM. Nu pare atat de greu acum, nu? Cu Simple HTML DOM mai mult (imi plac selectorii CSS3). Celelalte doua sunt recomandate de mai multi.
Ultima oară modificat Mie Noi 03, 2010 4:50 pm de către nevvermind, modificat de 2 ori în total.
-
Adytzoo
- Junior Member
- Mesaje: 35
- Membru din: Vin Aug 01, 2008 11:27 am
- Localitate: Rosiorii de Vede
- Contact:
am incercat cu simple html dom, dar vreau ceva foarte basic, asta e f general imi trebuie doar o functie mica, sa inteleg si eu procesu ca asa daca iau clasa si nu prea inteleg ce si cum de prin ea, ma incurc, stiam de getelementbyid din javascript nu mai sariti cu raspunsuri daca nu stiti ce intreb, exista si in php ceva asemanator.. eventual un substr, nu stiu ce sa folosesc sincer de asta am apelat aici... nu vreau clase , scripturi imprumutate, vreau o functie simpla, ar fi foarte util asa ceva si chiar am nevoie
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Adica tu vrei ceva simplu pentru ceva care are specificatii mai complexe decat creierul lui Britney Spears?
Sorry, nu exista asa ceva.
Daca iei date dintr-un HTML relativ constant ca format, atunci se mai poate face ceva.
Acele metode de "web scraping" nu sunt dificile in sine, ci tu nu stii sa lucrezi cu ele. Ia-o metodic si-ti garantez ca n-o sa ti se mai para intra-atat de urate.
Ok, nu vrei clase, scripturi imprumutate etc. Foloseste regex (preg_match). Aici se aplica zicala de pe Usenet: "I have a problem. I know, I'll use regular expressions! Now I have two problems". Daca nu te descurci, posteaza un model de html (daca e prea mare, foloseste pastebin.com) si vom incerca sa te ajutam cu niste regex.
Sorry, nu exista asa ceva.
Daca iei date dintr-un HTML relativ constant ca format, atunci se mai poate face ceva.
Acele metode de "web scraping" nu sunt dificile in sine, ci tu nu stii sa lucrezi cu ele. Ia-o metodic si-ti garantez ca n-o sa ti se mai para intra-atat de urate.
Ok, nu vrei clase, scripturi imprumutate etc. Foloseste regex (preg_match). Aici se aplica zicala de pe Usenet: "I have a problem. I know, I'll use regular expressions! Now I have two problems". Daca nu te descurci, posteaza un model de html (daca e prea mare, foloseste pastebin.com) si vom incerca sa te ajutam cu niste regex.
-
last1devil
- Average Member
- Mesaje: 60
- Membru din: Mar Sep 21, 2010 8:14 pm
- Localitate: Spain
- Contact:
Incearca cu:
Nu l-am testat pe html-ul tau dar eu am folosit functia asta de mai multe ori in acelasi scop.
Cod: Selectaţi tot
function get_between($content,$start,$end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
$content='<div id="header">
<h1>Heading</h1>
<div id="content">Content body</div>
</div>';
$start = '<div id="content">';
$end = '</div></div>';
echo get_between($content, $start, $end);
Nu l-am testat pe html-ul tau dar eu am folosit functia asta de mai multe ori in acelasi scop.
Be creative!
-
Adytzoo
- Junior Member
- Mesaje: 35
- Membru din: Vin Aug 01, 2008 11:27 am
- Localitate: Rosiorii de Vede
- Contact:
ideea ar fi eu sa bag doar DIV ID, pentru ca ala daca are div id='lalala' style='zxczxc' class='zxczxcz' nu am cum sa-mi dau seama, ceva care sa recunoasca unde se incheie start-ul divului... nu stiu daca ma intelegi, ceva cu pred match
Cod: Selectaţi tot
<div%%%id=%%%''[0-9a-zA-Z]>$content /div-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Intelege ca este o investitie proasta sa faci regex interpretand HTML, pentru simplul fapt ca HTML-ul NU este un limbaj regulat! Daca ar fi fost, putea fi intepretat corect de expresiile regulate.
Cum folosesti regex, daca ala are "<div id="footer">asdadasda<div>sdfsdfs</div></div>?
Programatorii cu ceva experienta (sau cei care au gasit articole anti-regex) iti vor spune mereu sa NU le folosesti pentru a interpreta HTML, ci alte unelte, precum cele mentionate de mine mai sus.
Si da codul ala HTML odata, ca sa-ti spunem cum sa folosesti regex daca tot o faci, nu tot completa dupa fiecare post.
Cum folosesti regex, daca ala are "<div id="footer">asdadasda<div>sdfsdfs</div></div>?
Programatorii cu ceva experienta (sau cei care au gasit articole anti-regex) iti vor spune mereu sa NU le folosesti pentru a interpreta HTML, ci alte unelte, precum cele mentionate de mine mai sus.
Si da codul ala HTML odata, ca sa-ti spunem cum sa folosesti regex daca tot o faci, nu tot completa dupa fiecare post.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Google [Bot] și 10 vizitatori
