Popis
Co znamená th? Referenční údaje o hyperbolických funkcích - vlastnosti, grafy, vzorce. Nepřepínejte: pokračování
Dozvíte se, jak získat seznam všech článků publikovaných na webu.
Krok 1. Příprava
Nejprve musíte zkopírovat knihovnu simpleHTMLdom, který je dostupný na webových stránkách
Archiv ke stažení obsahuje několik souborů, ale potřebujete pouze jeden simple_html_dom.php. Všechny ostatní soubory jsou příklady a dokumentace.
Krok 2: Základy analýzy
Tato knihovna se velmi snadno používá, ale než ji zprovozníte, musíte se naučit několik základních věcí.
$html = new simple_html_dom();// Načtení z řetězce
$html->load("
Ahoj světe!
");// Nahrát soubor
$html->load_file("http://net.tutsplus.com/");
Můžete tvořit zdrojový objekt stahování HTML buď z řetězce nebo ze souboru. Načtení ze souboru lze provést buď zadáním URL nebo z místního systému souborů.
Poznámky: Metoda načíst_soubor() delegáti pracují PHP funkce file_get_contents. Li allow_url_fopen není nastaveno na hodnotu skutečný ve vašem souboru php.ini, pak možná nebudete moci otevřít smazané soubory Tím pádem. V tomto případě se můžete vrátit k načítání pomocí knihovny CURL smazané stránky a poté pomocí metody čtěte zatížení().
Přístup k informacím
Jakmile máte objekt DOM, můžete s ním začít pracovat pomocí metody nalézt() a vytváření sbírek. Kolekce je skupina objektů nalezených selektorem. Syntaxe je velmi podobná jQuery.
Ahoj světe!
Byli zde.
V tomhle HTML příklad Zjistíme, jak získat přístup k informacím ve druhém odstavci, změnit je a pak vytisknout výsledek akcí.
1. # vytvořte a načtěte HTML
2. include("simple_html_dom.php");
3. $html = new simple_html_dom();
4. $html->load(“
Ahoj světe!
“);
5. # získat prvek představující druhý odstavec
6. $element = $html->find(“p“);
7. # upravit
8. $element->innertext .= “ a my jsme tady, abychom zůstali.”;
9. # Výstup!
10. echo $html->save();
Řádky 2-4: Načtěte HTML z řetězce, jak je vysvětleno výše.
Řádek 6: Najít všechny štítky
V HTML a vraťte je do pole. První odstavec bude mít index 0 a další odstavce budou podle toho indexovány.
Řádek 8: Přistupujeme k druhému prvku v naší kolekci odstavců (index 1) a přidáváme text do jeho atributu innertext. Atribut innertext představuje obsah mezi značkami a atribut externaltext představuje obsah včetně značek. Tag můžeme zcela nahradit pomocí atributu externaltext.
Nyní přidáme jeden řádek a upravíme třídu tagů našeho druhého odstavce.
$element->class = "název_třídy";
echo $html->save();
Finální HTML po příkazu uložení bude vypadat takto:
Ahoj světe!
Jsme tady a jsme tady, abychom zůstali.
Další selektory
Několik dalších příkladů selektorů. Pokud jste používali jQuery, bude vám vše připadat povědomé.
# získejte první nalezený prvek s id=“foo“
$single = $html->find("#foo", 0);
# získejte všechny prvky s třídou „foo“
$collection = $html->find(".foo");
# získat všechny značky odkazů na stránce
$collection = $html->najít("a");
# získat všechny značky odkazů, které se nacházejí uvnitř značky H1
$collection = $html->find("h1 a");
# dostat všechno img tagy with title="himom"!}
$collection = $html->najít("img");
První příklad vyžaduje určité vysvětlení. Všechny dotazy ve výchozím nastavení vracejí kolekce, dokonce i dotaz ID, který by měl vrátit pouze jeden prvek. Zadáním druhého parametru však říkáme „vrátit pouze první prvek z kolekce“.
Znamená to, že $single- jeden prvek, nikoli pole prvků s jedním členem.
Zbývající příklady jsou zcela zřejmé.
Dokumentace
Kompletní dokumentace ke knihovně je k dispozici na .
Krok 3: Příklad reálného světa
Abychom předvedli knihovnu v akci, napíšeme skript, který seškrábe obsah webu net.tutsplus.com a vygeneruje seznam názvů a popisů článků prezentovaných na webu....jen jako příklad. Scraping je webový trik a neměl by být používán bez povolení vlastníka zdroje.
Include("simple_html_dom.php");
$articles = array();
getArticles("http://net.tutsplus.com/page/76/");
Začněme připojením knihovny a voláním funkce getArticles označující stránku, ze které chceme začít analýzu.
Budeme také deklarovat globální pole, které budeme dělat jednodušší sběr všechny informace o článcích na jednom místě. Než začneme parsovat, podívejme se, jak je popsán článek na webu Nettuts+.
Toto je základní formát příspěvku na webu včetně komentářů. zdrojový kód. Proč jsou komentáře důležité? Analyzátor je počítá jako uzly.
Krok 4: Spuštění funkce analýzy
funkce getArticles($page) (globální $články;
$html = new simple_html_dom();
$html->load_file($page);
// ... Dále...
}
Začneme deklarováním globálního pole a vytvořením nového objektu simple_html_dom a poté načtěte stránku pro analýzu. Tato funkce bude voláno rekurzivně, takže jej nastavíme jako Parametr adresy URL stránky.
Krok 5. Najděte informace, které potřebujeme
1. $items = $html->find("div");
2. foreach($items as $post) (
3. # nezapomeňte počítat komentáře jako uzly
4. $articles = array($post->children(3)->vnější text,
5. $post->children(6)->first_child()->vnější text);
6. }
To je podstata funkce getArticles. Musíme se na to podívat podrobněji, abychom pochopili, co se děje.
Řádek 1: Vytvořte pole prvků - tag div s třídou náhledu. Nyní máme uloženou sbírku článků $items.
Řádek 4: $post nyní odkazuje na singl třída div náhled Pokud se podíváme do původního HTML, můžeme vidět, že třetím následným prvkem je značka H1, který obsahuje název článku. Bereme to a přivlastňujeme si to $články.
Nezapomeňte začít na 0 a při určování správného indexu uzlu vezměte v úvahu komentáře ke zdrojovému kódu.
Řádek 5: Šestý potomek $post- Tento $articles = “Název článku”; Prvním krokem je určit, jak najít další stránku. Na webu Nettuts+ je velmi snadné uhodnout číslo stránky z adresy URL, ale musíme získat odkaz v analýze. Pokud se podíváte na HTML, najdete následující: Toto je odkaz na další stránku a můžeme ji snadno najít podle třídy ‘ nextpostslink'. Nyní lze tyto informace použít. If($next = $html->najít("a", 0)) ( V prvním řádku zkontrolujeme, zda lze najít odkaz s třídou nextpostslink. Všimněte si použití druhého parametru ve funkci nalézt(). Tímto způsobem naznačíme, že chceme získat první prvek (index 0) ve vrácené kolekci. $další obsahuje jeden prvek, nikoli kolekci. Poté přiřadíme odkaz HREF$URL proměnná. To je důležité, protože příště odstraníme HTML objekt. Aby se zabránilo úniku paměti v php5, aktuální objekt simple_html_dom musí být před vytvořením dalšího objektu vymazáno a deaktivováno. Pokud se tak nestane, pak vše dostupná paměť může být absorbován. Nakonec zavoláme funkci getArticles s URL další strana. Rekurze se přeruší, když nezbývají žádné stránky k analýze. Nejprve nainstalujeme některé základní styly. Vše je zcela libovolné - můžete si nainstalovat, co se vám líbí. #hlavní ( Na stránku pak napíšeme malou PHP funkci pro zobrazení dříve uložených informací.
foreach($articles jako $item) ( Konečným výsledkem je jediná stránka HTML se seznamem všech článků ze stránek Nettuts+, počínaje tím, který byl zadán v prvním volání getArticles().
Pokud začnete analyzovat pro velké množství stránky (řekněme celý web), pak to může trvat dlouho. Na webu jako Nettuts+, který má více než 86 stránek, může proces analýzy trvat déle než minutu. Tato lekce vám toto téma otevře Analýza HTML. Existují další manipulační techniky DOM, které vám umožňují pracovat s selektorem xpath při hledání prvků. Popsáno v tuto lekci Knihovna se snadno používá a je skvělá rychlý start. Než stránku seškrábnete, nezapomeňte požádat o povolení. V zásadě se pro předávání parametrů používají metody POŠTA A DOSTAT. Štítek vytváří tlačítka na webové stránce a jejich akce se podobá výsledku získanému pomocí značky
(s parametrem type="button | reset | odeslat"). Na rozdíl od této značky nabízí pokročilé možnosti pro vytváření tlačítek. Například na takové tlačítko můžete umístit jakékoli HTML prvky, včetně obrázků. Pomocí stylů můžete definovat vzhled tlačítka změnou písma, barvy pozadí, velikosti a dalších parametrů.
Tlačítka s obrázky jsou podobná tlačítku Předložit, ale představují kresbu. K tomu jsme nastavili typ=obrázek A src="obrazek.gif". Když uživatel klikne kamkoli na obrázek, bude na server odeslán odpovídající formulář se dvěma dalšími proměnnými − sub_x A sub_y. Obsahují souřadnice uživatele, který kliknul na obrázek. Zkušení programátoři Můžete si všimnout, že názvy proměnných odeslané prohlížečem ve skutečnosti obsahují tečku spíše než podtržítko, ale PHP tečku automaticky převede na podtržítko. Slouží k odeslání formuláře do skriptu. Při vytváření tlačítka pro odeslání formuláře musíte zadat 2 atributy: type="submit" A value="Text tlačítka"
!}. atribut názvu nutné, pokud neexistuje jedno tlačítko, ale několik a všechny jsou vytvořeny pro různé operace, například tlačítka "Uložit", "Smazat", "Upravit" atd. Po kliknutí na tlačítko je skriptu předán řetězec název=text tlačítka.
Když stisknete tlačítko reset ( resetovat), všechny prvky formuláře budou nastaveny do stavu, který byl zadán ve výchozích atributech, a formulář nebude odeslán.
Zaškrtávací políčka nabízejí uživateli řadu možností a umožňují libovolný výběr (žádná, jedna nebo více z nich). Rádiové spínače nabízejí uživateli řadu možností, ale umožňují vybrat pouze jednu. Při vytváření regul textové pole velikost velikost a maximální přípustná délka maximální délka postavy, atribut typu nabývá hodnoty text. Pokud je parametr zadán hodnota, pak pole zobrazí hodnotu zadanou v proměnné. Při vytváření pole nezapomeňte uvést název pole, protože... tento atribut je povinný. Úplně stejné jako textové pole, až na to, že znaky zadané uživatelem se na obrazovce nezobrazí. Umožňuje předat skriptu některé informace o službě, aniž by se zobrazily na stránce. Štítek je rozevírací nebo rozbalený seznam a lze vybrat jeden nebo více řádků současně. Hodnota však bude předána poslednímu vybranému tlačítku. Pokud potřebujete vytvořit rozevírací seznam s předvídatelnou sekvencí. Například seznam s roky od 2000 do 2050. Pak se použije následující technika. Víceřádkové textové vstupní pole umožňuje odeslat nejen jeden řádek, ale několik najednou. V případě potřeby můžete zadat atribut pouze ke čtení, který zakazuje upravovat, mazat a měnit text, tzn. text bude pouze pro čtení. Pokud je nutné, aby byl text zpočátku zobrazen ve víceřádkovém vstupním poli, musí být umístěn mezi značky
. Aby víceřádkové textové pole vyhovovalo formátování html (zalomení řádků pomocí značky Slouží k implementaci nahrávání souborů na server. Při vytváření textového pole musíte také určit typ pole typ Jak "soubor". Metody poskytované protokolem HTTP, Trochu. Tento důležitá informace. Jiné cesty nejsou. V praxi se používají dva: Chcete-li předávat data pomocí metody DOSTAT není třeba vytvářet formulář na stránce HTML (použijte formuláře pro požadavky pomocí DOSTAT nikdo vám v tom nebrání) - stačí odkaz na dokument s přidáním řetězce dotazu, který může vypadat jako proměnná=hodnota. Páry jsou zřetězeny pomocí ampersandu & a řetězec je připojen k adrese URL stránky pomocí otazníku " ?
». Předávejte data pomocí metody POŠTA To je možné pouze pomocí formuláře na stránce HTML. Hlavní rozdíl POŠTA z DOSTAT skutečnost, že data nejsou přenášena v hlavičce požadavku, ale v těle, je tedy uživatel nevidí. Můžete jej upravit pouze změnou samotného formuláře. PHP je schopno přijmout soubor stažený pomocí libovolného prohlížeče. To umožňuje stahovat jak text, tak binární soubory. Spolu s PHP autentizací a funkcemi pro práci s souborový systém, Dostáváte plná kontrola nad tím, kdo smí nahrávat soubory a nad tím, co dělat se souborem po jeho nahrání. //Formulář pro nahrávání souborů Ve výše uvedeném příkladu "URL"
musí být nahrazen odkazem na PHP skript. Skryté pole MAX_FILE_SIZE(hodnota musí být uvedena v bajtech) musí předcházet pole pro výběr souboru a jeho hodnota je maximální přípustná velikost přijatý soubor. Měli byste se také ujistit, že ve formuláři zadáte atributy enctype="multipart/form-data", jinak nebudou soubory nahrány na server. Přímo: Getenv("POŽADAVKA_METODA"); vrátí se DOSTAT nebo POŠTA. Pokud se formulář používá k vyžádání některých informací, například během vyhledávání, měl by být odeslán pomocí metody DOSTAT. Chcete-li, aby byla stránka aktualizována, můžete si ji uložit do záložek a/nebo poslat odkaz příteli. Příklad demonstruje odesílání dat pomocí metod POST a GET současně a přijímání odpovědi ze serveru.
$url = "http://test.ru/patch/file.php?var=23&var2=54";
$parse_url = parse_url($url);
$path = $parse_url["path"]; // путь до файла (/patch/file.php)
if($parse_url["query"]) // если есть список параметров
$path .= "?" . $parse_url["query"]; // добавляем (?var=23&var2=54)
$host= $parse_url["host"]; // тут получаем хост (test.ru)
$data = "var3=test&var4=".urlencode("еще тест");
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if ($fp)
{
$out = "POST ".$path." HTTP/1.1\n";
$out .= "Host: ".$host."\n";
$out .= "Referer: ".$url."/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";
fputs($fp, $out); // отправляем данные
while($gets=fgets($fp,2048)) // читаем данные построчно и выводим их.
{
print $gets;
}
fclose($fp);
}
?> Není požadováno.
Výsledek tento příklad znázorněno na Obr. 1. Rýže. 1. Pohled na buňky zdobené pomocí stylů Každá specifikace prochází několika fázemi schvalování. Živý HTML standard (Living) vyniká - nedodržuje tradiční číslování verzí, protože je neustále vyvíjen a je pravidelně aktualizován.
$articles = “Toto je popis mého článku”Krok 6, Práce se stránkami
$URL = $dalsi->href;
$html->clear();
unset($html);
getArticles($URL);
} Krok 7. Výstup výsledků
margin:80px auto;
šířka:500px;
}
h1 (
font:bold 40px/38px helvetica, verdana, sans-serif;
okraj:0;
}
h1 a (
barva:#600;
text-decoration:none;
}
p(
pozadí: #ECECEC;
font:10px/14px verdana, sans-serif;
margin:8px 0 15px;
ohraničení: 1px #CCC solid;
odsazení: 15px;
}
.položka(
padding:10px;
}
echo"
echo $položka;
echo $položka;
echo"
}
?>Krok 8. Závěr
Hlavní rozdíl mezi metodami POŠTA A DOSTAT spočívá ve způsobu přenosu informací. V metodě DOSTAT parametry se předávají přes adresní řádek ( URL), tj. PROTI HTTP-request záhlaví, zatímco v metodě POŠTA parametry jsou přenášeny tělem HTTP-žádost a nejsou nijak zohledněny v adresní řádek.1. Tlačítka – Tag
Teoreticky značka musí být umístěn uvnitř formuláře nastaveného prvkem . Prohlížeče však nezobrazují chybovou zprávu a s tagem pracují správně , pokud se vyskytuje nezávisle. Pokud však potřebujete odeslat výsledek kliknutí na tlačítko na server, umístěte do kontejneru Nezbytně. Uzavírací štítek
Požadované.
Možnosti:
zakázáno– blokuje přístup a úpravu prvku.
typ– typ tlačítka
hodnota– Hodnota tlačítka, která bude odeslána na server nebo načtena pomocí spripů.
Parametr VYPNUTO
Blokuje přístup a úpravu tlačítka. V tomto případě se zobrazí šedě a uživatel jej nemůže aktivovat. Navíc takové tlačítko nemůže zaostřit stisknutím klávesy Tab, myší nebo jinou metodou. Tento stav tlačítka však lze změnit pomocí skriptů.
Definuje typ tlačítka, který nastavuje jeho chování na formuláři. Podle vzhled tlačítka odlišné typy se nijak neliší, ale každé takové tlačítko má své funkce. Výchozí hodnota: knoflík.
Argumenty:
knoflík – Běžné tlačítko.
resetovat– Tlačítko pro vymazání zadaných údajů formuláře a vrácení hodnot do původního stavu.Odeslat – Tlačítko pro odeslání dat formuláře na server.
Parametr HODNOTA Definuje hodnotu tlačítka, která bude odeslána na server. Pár " jméno=hodnota", kde název je určen parametrem název štítku a hodnota je parametr hodnota. Význam se může shodovat s textem na tlačítku nebo být nezávislý. Také parametr hodnota slouží k přístupu k datům prostřednictvím skriptů.
1.1. Tlačítko (typ vstupu = tlačítko)
1.2. Tlačítko s obrázkem (typ vstupu=obrázek)
1.3. Tlačítko odeslání formuláře (typ vstupu=odeslat)
Není potřeba žádný PHP skript.1.4. Pole tlačítek (odeslat) pro výběr možnosti akce
2. Tlačítko Reset
Není potřeba žádný PHP skript.3. Zaškrtávací políčko
";
};
};
4. Vypínač (rádio)
Příklad 1.
Příklad 2
\n"; ?>5. Textové pole (text)
6. Pole hesla
7. Skryté textové pole (skryté)
8. Rozbalovací seznam (vyberte)
Seznam začíná spárovanými značkami
. Tagy
umožňují určit obsah seznamu a parametr hodnota definuje hodnotu řetězce. Pokud ve značce zadaný parametr vybraný, pak bude řádek zpočátku vybrán. Parametr size určuje, kolik řádků bude seznam zabírat. Li velikost rovná se 1
, pak se seznam rozbalí. Pokud je zadán atribut násobek, pak můžete vybrat více prvků ze seznamu. Ale toto schéma se prakticky nepoužívá a kdy velikost = 1 nedává smysl. 9. Víceřádkové pole pro zadávání textu (textová oblast)
Existuje parametr zabalit– úkol zalomení řádků. Možné hodnoty:
vypnuto– deaktivuje zalamování řádků;
virtuály– zobrazí zalomení řádků, ale odešle text tak, jak byl zadán;
fyzický– konce řádků jsou ponechány v původní podobě.
Výchozí značka vytvoří prázdné pole o šířce 20
znaky a skládající se z 2
linky.
nebo
), pak použijte funkci nl2br():10. Tlačítko pro nahrávání souborů (procházet)
Způsoby komunikace prohlížeče se serverem
DOSTAT- To je, když se data přenášejí do adresního řádku, například když uživatel klikne na odkaz.
POŠTA– když stiskne tlačítko na formuláři.metoda GET
Ale nemusíte používat páry klíč=hodnota, pokud potřebujete předat pouze jednu proměnnou – k tomu musíte za otazník napsat VALUE (ne název) proměnné.
Výhoda předávání parametrů tímto způsobem je klientům, kteří nemohou metodu používat POŠTA(Například, vyhledávače), budou stále moci jednoduše sledovat odkaz, předat parametry skriptu a přijímat obsah.
Chyba spočívá v tom, že pouhou změnou parametrů v adresním řádku může uživatel otočit skript nepředvídatelným způsobem, což vytváří obrovskou bezpečnostní díru v kombinaci s nedefinovanými proměnnými a register_globals zapnutý nebo někdo může zjistit hodnotu důležité proměnné (např ID-sessions), pouhým pohledem na obrazovku monitoru.
:
- pro přístup k veřejným stránkám s předáváním parametrů (vyšší funkčnost)
- přenos informací, které neovlivňují úroveň zabezpečení
:
- pro přístup k chráněným stránkám s přenosem parametrů
- přenášet informace ovlivňující úroveň zabezpečení
- pro přenos informací, které nemůže uživatel změnit (některé přenášejí text SQL dotazů.Metoda POST
Výhoda:
- větší bezpečnost a funkce dotazování pomocí formulářů Metoda POST.
Chyba:
- menší dostupnost.
Na co byste ho měli používat?:
- pro přenos velkého množství informací (text, soubory..);
- předat jakékoli důležité informace;
- omezit přístup (například použít pouze formulář pro navigaci - možnost, která není dostupná všem programům robotů nebo chytačům obsahu).
K čemu se nemá používat:
Stránka pro nahrávání souboru může být implementována pomocí speciální formulář, který vypadá asi takto:
Pozornost
Volba MAX_FILE_SIZE je doporučení prohlížeče, i když PHP by tuto podmínku také zkontrolovalo. Obejít toto omezení na straně prohlížeče je poměrně snadné, takže byste se neměli spoléhat na všechny soubory větší velikost bude pomocí této funkce zablokován. Nicméně, Omezení PHP ohledně maximální velikost nemožné obejít. Stejně byste měli přidat proměnnou formuláře MAX_FILE_SIZE, protože zabraňuje uživatelům v úzkostném čekání při přenosu velkých souborů, jen aby zjistili, že soubor je příliš velký a přenos ve skutečnosti selhal.Jak definovat metodu požadavku?
Jakou metodu použít?
Pokud jsou v důsledku odeslání formuláře zapsána nebo změněna data na serveru, měli byste je odeslat pomocí metody POŠTA a je nutné po zpracování formuláře přesměrovat prohlížeč pomocí metody DOSTAT. Taky, POŠTA může být nutné, pokud se potřebujete přenést na server velký objemúdaje (od DOSTAT je velmi omezená), stejně jako v případě, že by se přenášená data neměla „zobrazovat“ v adresním řádku (například při zadávání přihlašovacího jména a hesla).
V každém případě po zpracování POŠTA Vždy byste měli prohlížeč přesměrovat na nějakou stránku, i stejnou, ale bez údajů formuláře, aby se při obnovení stránky znovu nezaznamenaly.Jak předat data do jiného souboru přímo z těla PHP programu metoda GET a POST?
Uzavírací štítek
Atributy
Příklad
Prohlížeč
internet Explorer
Opera
Firefox
Verze
5.5
6.0
7.0
7.0
8.0
9.0
1.0
2.0
Podporováno
Ano
Ano
Ano
Ano
Ano
Ano
Ano
Ano
Specifikace