Heippa.
Onkos mahdollista hakea toiselta sivulta jotain tiettyä id:tä tai classia divistä? Ja tulostaa sen sisällön?
EDIT: Anteeksi virheeni. Tarkoitin siis, miten voi hakea jonkin tietyn nimisen (motto) input kentän value arvon.
Moderaattori voi vaihtaa otsikon mielellään sopivaksi, koska ei olekkaan divistä kyse.
On mahdollista hakea. Tutustu esimerkiksi DOM rajapintaan.
Teuro kirjoitti:
On mahdollista hakea. Tutustu esimerkiksi DOM rajapintaan.
Hmm.. Löytyykö näin myös muualta netistä, vaikka jos koodi on osoitteessa www.munsivut.fi ja ettii sillä www.ohjelmointiputka.net:stä vaikka div tagin nimeltä id? (Toi id nyt oli keksitty)
Ken tietää, jos esimerkin saisi väännettäväksi.
EDIT: Anteeksi virheeni. Tarkoitin siis, miten voi hakea jonkin tietyn nimisen (motto) input kentän value arvon.
Eikö kukaan tiedä? :s Tarvitsisin pikaisesti
file_get_contents
+ getElementById
.
Osaisitko antaa esimerkin? Eikös tolla file_get_contents
:llä saa sivun näkymään?
Rocceri kirjoitti:
Osaisitko antaa esimerkin? Eikös tolla
file_get_contents
:llä saa sivun näkymään?
https://www.php.net/file_get_contents:
file_get_contents — Reads entire file into a string
Esimerkit löytyvät edellä mainituilta sivuilta soveltamalla.
trilog kirjoitti:
Rocceri kirjoitti:
Osaisitko antaa esimerkin? Eikös tolla
file_get_contents
:llä saa sivun näkymään?https://www.php.net/file_get_contents:
file_get_contents — Reads entire file into a string
Esimerkit löytyvät edellä mainituilta sivuilta soveltamalla.
Hmm.. Valitettavasti nyt pätkii tuo englanti.. Empä tiedä mitä tuolta pitäisi soveltaa. Kun ei kommenteista tuolla mitään ymmärrä.
Rocceri kirjoitti:
Hmm.. Valitettavasti nyt pätkii tuo englanti.. Empä tiedä mitä tuolta pitäisi soveltaa. Kun ei kommenteista tuolla mitään ymmärrä.
Sitten vain opiskelemaan Englantia. Takaan, että tulet sitä taritsemaan erittäin paljon, mikäli aiot jatkaa ohjelmoinnin parissa.
Teuro kirjoitti:
Rocceri kirjoitti:
Hmm.. Valitettavasti nyt pätkii tuo englanti.. Empä tiedä mitä tuolta pitäisi soveltaa. Kun ei kommenteista tuolla mitään ymmärrä.
Sitten vain opiskelemaan Englantia. Takaan, että tulet sitä taritsemaan erittäin paljon, mikäli aiot jatkaa ohjelmoinnin parissa.
Se tässä nyt ei ole varmaan pääasia. (Vaikka ihan oikeassa olet) Väsyttää vaan ihan vietävästi kun kuudelta olen herännyt. Ehkä sen takia ei muistu sanat mieleen. Mutta jos ihan asiassa pysytään..
Rocceri kirjoitti:
Se tässä nyt ei ole varmaan pääasia. (Vaikka ihan oikeassa olet) Väsyttää vaan ihan vietävästi kun kuudelta olen herännyt. Ehkä sen takia ei muistu sanat mieleen. Mutta jos ihan asiassa pysytään..
Ehkä kannattaa nukkua hetken aikaa, jotta pahin kiire menee ohitse ja jaksaa taas keskittyä. No mutta alla on pienehkö esimerkki, jossa haetaan tietty linkkisolmu. Lopuksi tulostetaan vielä linkin teksti.
<?php $data = file_get_contents("http://www.manssi.net/index.php"); $sivu = new DOMDocument("1.0", "ISO-8859-1"); $sivu->loadXML($data); /* Ajetaan DOM::validate() metodin läpi */ $sivu->validate(); $solmu = $sivu->getElementById("etusivu"); echo $solmu->textContent; ?>
Rocceri kirjoitti:
EDIT: Anteeksi virheeni. Tarkoitin siis, miten voi hakea jonkin tietyn nimisen (motto) input kentän value arvon.[/b]
Teuro vastasikin jo alkuperäiseen kysymykseen. Laitetaan vielä tähän uuten kysymykseen esimerkki:
<?php // Luodaan DOM-dokumentti $xmldoc = new DOMDocument("1.0", "UTF-8"); $html = $xmldoc->createElement("html"); $xmldoc->appendChild($html); $head = $xmldoc->createElement("head"); $html->appendChild($head); $title = $xmldoc->createElement("title", ""); $head->appendChild($title); $body = $xmldoc->createElement("body"); $html->appendChild($body); $input = $xmldoc->createElement("input"); $input->setAttribute("name", "testi"); $input->setAttribute("type", "text"); $input->setAttribute("value", "morjes"); $body->appendChild($input); echo $xmldoc->saveXML(); // Tulostetaan valmis dokumentti // Etsitään pyydetty input -elementti nimen perusteella ja tulostetaan sen sisältö $search = "testi"; foreach ($xmldoc->getElementsByTagName("input") as $node) { if ($node->getAttribute("name") === $search) { echo "Löytyi, value sillä on: '".$node->getAttribute("value")."'"; break; } } ?>
Toki tämäkin menisi tuolla getElementById:llä
helposti, jos input -elementti vain id -määrityksen sisältää.
trilog: Mitenkös tällä haetaan muualta netistä? Tuohan scannaa sivun jolla se on (?)
Rocceri kirjoitti:
trilog: Mitenkös tällä haetaan muualta netistä? Tuohan scannaa sivun jolla se on (?)
Jep, esimerkin tarkoitus olikin näyttää miten DOM -rajapintaa käytetään. Teuron esimerkissä oli, miten toiselta sivulta haetaan tietoja.
trilog kirjoitti:
Rocceri kirjoitti:
trilog: Mitenkös tällä haetaan muualta netistä? Tuohan scannaa sivun jolla se on (?)
Jep, esimerkin tarkoitus olikin näyttää miten DOM -rajapintaa käytetään. Teuron esimerkissä oli, miten toiselta sivulta haetaan tietoja.
Miten nämä toiminnot yhdistetään?
Rocceri kirjoitti:
Miten nämä toiminnot yhdistetään?
Tuossa mun esimerkissähän ladataan ulkopuolinen sivu, sekä etsitään tietyllä id:ä oleva elementti, sekä tulostetaan sen tekstisisältö. Ei kai tuossa mitään tarvitse yhdistellä. Muiden elementtien valitseminen tapahtuu aivan samalla tavalla. Input elementeillä hakeminen olisi jotenkin näin:
<?php $data = file_get_contents("http://www.manssi.net/palaute.php"); $sivu = new DOMDocument("1.0", "ISO-8859-1"); $sivu->loadXML($data); /* Ajetaan DOM::validate() metodin läpi */ $sivu->validate(); $solmu = $sivu->getElementsByTagName("input"); for($a = 0; $a < $solmu->length; $a++){ echo $solmu->item($a)->getAttribute("value"); } ?>
Teuro kirjoitti:
Rocceri kirjoitti:
Miten nämä toiminnot yhdistetään?
Tuossa mun esimerkissähän ladataan ulkopuolinen sivu, sekä etsitään tietyllä id:ä oleva elementti, sekä tulostetaan sen tekstisisältö. Ei kai tuossa mitään tarvitse yhdistellä. Muiden elementtien valitseminen tapahtuu aivan samalla tavalla. Input elementeillä hakeminen olisi jotenkin näin:
<?php $data = file_get_contents("http://www.manssi.net/palaute.php"); $sivu = new DOMDocument("1.0", "ISO-8859-1"); $sivu->loadXML($data); /* Ajetaan DOM::validate() metodin läpi */ $sivu->validate(); $solmu = $sivu->getElementsByTagName("input"); for($a = 0; $a < $solmu->length; $a++){ echo $solmu->item($a)->getAttribute("value"); } ?>
... printaa ValmisUusiksu1018ValmisUusiksi Onkohan tuo mitä tuossa valuessa on? Jos, niin sitten toimii. Mutta, tuohon jos vielä sellainen, että hakee tietyn nimisen inputin? Koska jollain sivuilla niitä on reilusti
Rocceri kirjoitti:
... printaa ValmisUusiksu1018ValmisUusiksi Onkohan tuo mitä tuossa valuessa on? Jos, niin sitten toimii. Mutta, tuohon jos vielä sellainen, että hakee tietyn nimisen inputin? Koska jollain sivuilla niitä on reilusti
Tulostus on ihan oikein. Tietyn nimistä inputtia ei kaiketikaan voi ihan suoraan hakea, mutta vastaavalla getAttribute("name"); metodilla onnistuu ihan mainiosti.
EDIT siis
<?php if($haettuNimi == $solmu->getAttribute("name")){ /*Tee jotakin */ } ?>
Hmm..
Tarkoitus olisi hakea sivulta www.habbo.fi/me käyttäjänimen perusteella 'motto'.
Hahmojen sivut hotellissa on muotoa habbo.fi/home/hahmo, ja tällä ns. profiilisivulla lukee tämä motto myös muodossa:
<div class="profile-motto"> Hahmon motto <div class="clear"></div></div>
Jos on annettu muuttujalle $nimi arvoksi vaikka Average, tämä koodi hakisi tiedon osoitteesta http://habbo.fi/home/Average.
Sen jälkeen koodi etsisi tämän classin nimeltä profile-motto, ja tulostaisi sen sisällön.
Ps. Anteeksi taas, sanoin aluksi että id pitäisi etsiä, sitten inputti, mutta unohdin, että tuon input kohdan näkee, pitää olla kirjautuneena sisälle, ja.. Niin, se jäi siihen, että tuo koittaisi hakea omaa mottoa jos on kirjautunut sivulle.
Eli, siis pitäisi hakea sittenkin div classin sisältö.
Rocceri kirjoitti:
Ps. Anteeksi taas, sanoin aluksi että id pitäisi etsiä, sitten inputti, mutta unohdin, että tuon input kohdan näkee, pitää olla kirjautuneena sisälle, ja.. Niin, se jäi siihen, että tuo koittaisi hakea omaa mottoa jos on kirjautunut sivulle.
Eli, siis pitäisi hakea sittenkin div classin sisältö.
No niin nyt sinulle on annettu tarvittavat työkalut tuon solmun hakemiseen. Koeta ensin hakea itse tuo solmu, äläkä lannistu vaikka se ei heti onnistuisikaan. Haet siis DOMDocument::getElementsByTagName("div") metodilla elementit taulukkoon, jonka jälkeen käyt taulukon läpi esimerkki löytyy tästä langasta.
Jokaisen solmun kohdalla vertaat DOMElement::getAttribute("class") metodilla ollaanko oikeassa solmussa, jonka jälkeen teet mitä haluat kyseisellä solmulla. Koko solmun tekstisisältö on textContent jäsenmuuttujassa. Solmun sisällä olevat solmut joudut hakemaan erikeen.
Rocceri kirjoitti:
Eli, siis pitäisi hakea sittenkin div classin sisältö.
Sen saat haettua minun esimerkin mukaisesti. Muutat vain getElementsByTagName("input")
=> getElementsByTagName("div")
ja $node->getAttribute("name")
=> $node->getAttribute("class")
trilog kirjoitti:
Rocceri kirjoitti:
Eli, siis pitäisi hakea sittenkin div classin sisältö.
Sen saat haettua minun esimerkin mukaisesti. Muutat vain
getElementsByTagName("input")
=>getElementsByTagName("div")
ja$node->getAttribute("name")
=>$node->getAttribute("class")
Niin se muuten toimisi, jos tämä scripti olisi tuolla http://habbo.fi/home/Average osoitteessa.
Rocceri kirjoitti:
Niin se muuten toimisi, jos tämä scripti olisi tuolla http://habbo.fi/home/Average osoitteessa.
Sekin on sinulle kerrottu jo, miten voit hakea toisilta sivuilta tietoja (file_get_contents
). Nyt joudut siis hieman soveltamaan oppimaasi.
Valitettavasti menee yli hilseen tämä DOM. :s
En millään saa väännettyä mitään. 2 päivää olen koittanut - ilman tulosta.
Rocceri, suosittelen opettelemaan tiedonhaun jalon taidon. Vaikutat siltä että alat ohjelmoimaan jotain ja heti kun tulee pienikin vaikeus vastaan, ryntäät ohjelmointiputkaan tekemään uutta topikkia, ja kun sieltä linkitetään sivusto, vastaat ettet osaa oikein englantia tai sivu on liian sekava tai "en tajunnut kun luin 10min tota".
Ohjelmointi vaatii kärsivällisyyttä, siihen oppii kyllä kun vaan yrittää. Ihan rauhassa. Sen DOMinkin opit kun rauhallisesti luet eri oppaita alusta alkaen ja uhraat oikeasti sitä aikaa.
En yleensä suoraan valmista koodia laittele, mutta tässä tapauksessa laitan, koska ehkä sekoitin sinua tuon oman esimerkkini kanssa liikaa.
<?php /* Teuron esimerkistä: */ // Haetaan data sivulta $data = file_get_contents("http://www.manssi.net/palaute.php"); // Luodaan uusi dokumentti $xmldoc = new DOMDocument("1.0", "ISO-8859-1"); // Ladataan haettu sisältö dokumenttiin... $xmldoc->loadXML($data); // ...ja validoidaan se $xmldoc->validate(); /* Minun esimerkistä: */ // Etsitään pyydetty elementti $search = "testi"; foreach ($xmldoc->getElementsByTagName("div") as $node) { // Verrataan elementin 'class' -arvoa etsittävään arvoon if ($node->getAttribute("class") === $search) { echo "Löytyi, sisältö on: '".$node->textContent."'"; // Lopetetaan silmukka, koska elementti löytyi jo, joten muita div -elementtejä on turha enää käydä läpi break; } } ?>
Ei ollut vaikeaa kahden esimerkin soveltaminen, eihän? Kotitehtävänä tässä oli tuo textContent
, jolla saadaan elementin sisältö esiin, jonka takia todennäköisesti et saanut haluttua tietoa ulos.
Kyllä, kiitos. Tuo toimii tälläisenä:
<?php /* Teuron esimerkistä: */ // Haetaan data sivulta $data = file_get_contents("http://www.manssi.net/index.php"); // Luodaan uusi dokumentti $xmldoc = new DOMDocument("1.0", "ISO-8859-1"); // Ladataan haettu sisältö dokumenttiin... $xmldoc->loadXML($data); // ...ja validoidaan se $xmldoc->validate(); /* Minun esimerkistä: */ // Etsitään pyydetty elementti $search = "tapahtuma"; foreach ($xmldoc->getElementsByTagName("div") as $node) { // Verrataan elementin 'class' -arvoa etsittävään arvoon if ($node->getAttribute("class") === $search) { echo "Löytyi, sisältö on: '".$node->textContent."'"; // Lopetetaan silmukka, koska elementti löytyi jo, joten muita div -elementtejä on turha enää käydä läpi break; } } ?>
Mutta, kun haetaankin tuolta Habbosta, missä onkin yhden div classin sisällä toinenkin div, niin ei toimi.
<?php /* Teuron esimerkistä: */ // Haetaan data sivulta $data = file_get_contents("http://www.habbo.fi/home/Average"); // Luodaan uusi dokumentti $xmldoc = new DOMDocument("1.0", "ISO-8859-1"); // Ladataan haettu sisältö dokumenttiin... $xmldoc->loadXML($data); // ...ja validoidaan se $xmldoc->validate(); /* Minun esimerkistä: */ // Etsitään pyydetty elementti $search = "profile-motto"; foreach ($xmldoc->getElementsByTagName("div") as $node) { // Verrataan elementin 'class' -arvoa etsittävään arvoon if ($node->getAttribute("class") === $search) { echo "Löytyi, sisältö on: '".$node->textContent."'"; // Lopetetaan silmukka, koska elementti löytyi jo, joten muita div -elementtejä on turha enää käydä läpi break; } } ?>
Johtuuko vika siitä, että tuon haettavan classin sisällä on toinenkin divi?
Rocceri kirjoitti:
Johtuuko vika siitä, että tuon haettavan classin sisällä on toinenkin divi?
Ei sillä tässä tapauksessa ole vaikutusta, mikäli siis se div on tällainen:
<div class="profile-motto"> Hahmon motto <div class="clear"></div></div>
trilog kirjoitti:
Rocceri kirjoitti:
Johtuuko vika siitä, että tuon haettavan classin sisällä on toinenkin divi?
Ei sillä tässä tapauksessa ole vaikutusta, mikäli siis se div on tällainen:
<div class="profile-motto"> Hahmon motto <div class="clear"></div></div>
Mistä tämä sitten johtuu?
Eikös tuo validointi ole aika turhaa tuossa? Manuskan mukaan ko. metodi palauttaa vaan totuusarvo riippuen validoinnin tuloksesta, eikä tuossa oteta sitä mitenkään huomioon.
EDIT: Olen kuullut esim. velhosta nimeltä tino@mureakuha, jolle merkistöt PHP:ssä ovat kuin aamukaurapuuroa. Alla oleva mutu-tieto ja nillitys on allekirjoittaneen lyhyen merkistöseikkailun antia. Luottakaamme tulevaan kutosversioon.
Toinen kuriositeetti: PHP:n kanssa saa olla aina vähän varpaillaan noiden merkistöjen kanssa. Tässähän nyt tehdään niin, että haetaan file_get_contents
-funktiolla UTF8-koodatuksi metatageissa väitettyä dataa, jonka sitten kerrotaan DOMDocument
-oliolle olevan latin1:tä. Noh, file_get_contents
ei pikaisen lueskelun mukaan aina hanskaa unicodea, eikä palvelimella pyörivä PHP (ns. "kunnon" unicode-tuki on ilmeisesti tulossa vasta versioon 6?) välttämättä osaa säilöä merkkijonon merkistöä oikein (citation needed). Oman mausteensa tuovat vielä kaikki lisäosat ja oliot, joille koodausta pitää erikseen mainostaa (lisääppä tuohon vielä saveHTML
ja Tidy
[Nimim. CP-1252 -> ISO-8859-1? -> UTF-8 = Ctrl+H:lle hommia]. Sudenkuoppia on kuulemma mahdollista välttää jos omistaa loitsukirjan ja jäniksenkäpälän.
Esimerkki ongelmanratkaisun vaiheisiin:
1. Ei toimi? Miten ei toimi? //Oikeaa div-elementtiä ei löydy. -> 2. Miksi ei löydy? Tutkaillaan löytyneitä div-solmuja. //Div-elementtejä ei löytynyt yhtään kappaletta -> 3. Miksi ei löytynyt? Tutkaillaan luotua DOMDocument-instanssia. //Olion luonti epäonnistui. Korjataan virhe.
Muuttujien ja tilojen tutkailuihin kelpaavat esim. echo
, var_dump
sekä tässä tilanteessa DOMDocument->saveHTML
. Useasti myös virhelogin tuijottelu voi auttaa, testausserverillä tulosteet on helpoin ohjata (myös) suoraan sivulle. Ja joku IDE varmaan helpottaa debuggausta kummasti, mutta voip mennä jo yliammunnan puolelle.
Voiko tehdä näin:
<?php $teti = file_get_contents("http://www.habbo.fi/home/Average"); $alku = "profile-motto"; $loppu = strrev("profile-friend-request"); $teti = strstr($teti, $alku); $ulos = strrev(strstr(strrev($teti),$loppu) ); $ulos = ereg_replace('">', ' = ', $ulos); echo $ulos; ?>
tulostaa: profile-motto = Haterz Everywhere
Onnistuu tuo DOMillakin, kunhan hiukan säätää tuota. Olisi pitänyt arvata, että habbo ei ole nähnytkään ehjää merkkausta, joten ainakaan XML:ä lataus ei onnistu. Alla olevalla pätkällä lataus toki onnistuu.
<?php /* Teuron esimerkistä: */ // Haetaan data sivulta $data = file_get_contents("http://www.habbo.fi/home/Average"); // Luodaan uusi dokumentti $xmldoc = new DOMDocument("1.0", "ISO-8859-1"); // Ladataan haettu sisältö dokumenttiin... $xmldoc->recover = true; $xmldoc->strictErrorChecking = false; @$xmldoc->loadHTML($data); /* Minun esimerkistä: */ // Etsitään pyydetty elementti $search = "profile-motto"; foreach ($xmldoc->getElementsByTagName("div") as $node) { // Verrataan elementin 'class' -arvoa etsittävään arvoon if ($node->getAttribute("class") === $search) { echo "Löytyi, sisältö on: '".$node->textContent."'"; // Lopetetaan silmukka, koska elementti löytyi jo, joten muita div -elementtejä on turha enää käydä läpi break; } } ?>
PHP.netissä on jonkin funktion ohessa jonkun kirjoittama koodinpätkä, joka osaa lukea "oikein" aivan tolkuttoman rikkonaistakin HTML:ää. En vain tähän hätään millään muista mikä se funktio oli, jonka oheen se oli lähetetty. Jos ottaa huomioon PHP:n funktioiden määrän, niin kukaan tuskin ihmettelee tätä... :D
Mahtavaa Teuro! Tuo toimii hienosti :D
Regular expressions voisi olla vastaus
https://www.ohjelmointiputka.net/keskustelu/
<html> <head> <title>loooooookup</title> </head> <body> <?php $theurl=array('https://www.ohjelmointiputka.net/keskustelu/12950-merkkijono-tiettyjen-merkkijonojen-v%C3%A4liss%C3%A4'); foreach ($theurl as $current){ $contents = file_get_contents($current); if (!($contents)) { echo 'Could not open URL'; exit; } preg_match_all("/\\[tagi\\](.*?)\\[\\/tagi\\]/", $contents, $tiedot); var_dump($tiedot); } ?> </body> </html>
Hmm.. Tuossa Teuron esimerkissä ei toimi ääkköset. :o Mitä merkkausta kannattaa käyttää?
Samaa kuin itse haettavalla sivulla.
tsuriga kirjoitti:
Tässähän nyt tehdään niin, että haetaan file_get_contents-funktiolla UTF8-koodatuksi metatageissa väitettyä dataa, jonka sitten väitetään
DOMDocument
-oliolle olevan latin1:tä.
Eli muuta 'ISO-8859-1' -> 'utf8'.
Normaalisti käytän tota ISO-8859-1:tä mutta nyt tuossa se ei toimi.
Rocceri kirjoitti:
Normaalisti käytän tota ISO-8859-1:tä mutta nyt tuossa se ei toimi.
Normaalisti tulisi käyttää samaa merkkausta, kuin millä itse teksti on tuotettu.
tsuriga kirjoitti:
Samaa kuin itse haettavalla sivulla.
tsuriga kirjoitti:
Tässähän nyt tehdään niin, että haetaan file_get_contents-funktiolla UTF8-koodatuksi metatageissa väitettyä dataa, jonka sitten väitetään
DOMDocument
-oliolle olevan latin1:tä.Eli muuta 'ISO-8859-1' -> 'utf8'.
Tuolla Habossa on utf-8, mutta kun laitan sen tuohon koodiin, niin ei vaikuta mitään. Sitten kun laitan tuonne Metalhabboon utf-8:n tuo Teuron koodi toimii, mutta muut ääkköset menevät.
Jos laitan Iso-8859-1:n Metalhabboon, muut ääkköset toimivat, paitsi tuo koodin luomat.
Onko kooditiedostosi tallennettu UTF-8-koodauksella? Onko luotavan sivun merkistöksi asetettu UTF-8? Mulla toimi ok ko tallensin Habbon esimerkkisivun omalle palvelimelle ja hain divin sisältämän arvon kotikoneelta. Käytin koodissa merkkijonoa 'utf8' parametrina DOMDocumentille
(eli ilman viivaa, kuten meta-tageissa charsetin kohdalla. Liekö sitten oikea vai väärä ilmoitusasu, ken sen tietää?).
Eipä toimi. Sitten pelittää jos laitan index.php:hen utf8, mutta sitten menee kaikki muut ääkköset.
Sivusi metatagit ovat väärin asetettu ja/tai selaimesi ei ole huomannut sivusi merkistökoodauksen vaihtumista.
Jos tahdot käyttää alkuperäistä merkistöäsi niin pystyt yhdellä funktiolla (utf8_decode()) decoodaamaan haetun sivun ennen jatkokäsittelyä, jolloin merkistö on sama kuin omassa sivussasi.
Teuro kirjoitti:
Onnistuu tuo DOMillakin, kunhan hiukan säätää tuota. Olisi pitänyt arvata, että habbo ei ole nähnytkään ehjää merkkausta, joten ainakaan XML:ä lataus ei onnistu. Alla olevalla pätkällä lataus toki onnistuu.
<?php /* Teuron esimerkistä: */ // Haetaan data sivulta $data = file_get_contents("http://www.habbo.fi/home/Average"); // Luodaan uusi dokumentti $xmldoc = new DOMDocument("1.0", "ISO-8859-1"); // Ladataan haettu sisältö dokumenttiin... $xmldoc->recover = true; $xmldoc->strictErrorChecking = false; @$xmldoc->loadHTML($data); /* Minun esimerkistä: */ // Etsitään pyydetty elementti $search = "profile-motto"; foreach ($xmldoc->getElementsByTagName("div") as $node) { // Verrataan elementin 'class' -arvoa etsittävään arvoon if ($node->getAttribute("class") === $search) { echo "Löytyi, sisältö on: '".$node->textContent."'"; // Lopetetaan silmukka, koska elementti löytyi jo, joten muita div -elementtejä on turha enää käydä läpi break; } } ?>
MBnetin phpllä ei taida toimia?
Warning: domdocument() expects parameter 2 to be long, string given in ... on line 7
EDIT: Siis Teuron viimeisin esimerkki.
EDIT2:
PHP.net kirjoitti:
The DOM extension allows you to operate on XML documents through the DOM API with PHP 5.
Niinpä on.
Mutta,
PHP.net kirjoitti:
For PHP 4, use DOM XML.
MBnetissä taitaa olla php 4 vai onko 3?
Vuonna 2009 ei kuitenkaan ole kerrassaan mitään syytä käyttää PHP:n 4 veriota, jonka tuki on loppunut aikoja sitten.
MBnetissä on PHP 4 käytössä, ja se muutenkin tippunut jo nykypäivän hostauspalveluista ajat sitten.
E: Ohho, puhinpas mitä sattuu:
koti.mbnet.fi siirtyy PHP 5:n
Onko jo siirtynyt MBnetti php 5seen?
Olli kirjoitti:
Onko jo siirtynyt MBnetti php 5seen?
Ei ole ihan vielä. Huomenna (26.5) pitäisi siirtyä ainakin tuon mbnetin ylläpidon sähköpostiin lähettämän tiedotteen mukaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.