NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Výběr cesty obrázku pomocí preg_match_all

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
roman.labovsky:30.6.2015 17:43

Ahoj,

potřeboval bych trochu pomoci, používám funkci preg_match_all. Jde mi o separování atributu src tagu img, z textu kódovaného pomocí html dokáži vybrat všechny src, ale potřeboval bych jen ty, které začínají na js/uploads/.

preg_match_all('/< *img[^>]*src *= *["\']?([^"\']*)/i', $this->clanky[$i]["obsah"], $matchs, PREG_PATTERN_ORDER);

Pokud někdo víte jak upravit parametr funkce preg_match_all tedy ==> '/< img[^>]src = *["\']?([^"\'­])/i', tak aby funkce vybírala pouze cesty obrázku začínající na js/uploads/ budu velmi rád nebo pokud někdo víte syntaxi výběru, co jednotlivé znaky znamenají a napíšete mi jejich význam pokusím se sám, případně odkaz. Na internetu jsem hledal, ale ne moc úspěšně. Děkuji za odpověď.

 
Odpovědět
30.6.2015 17:43
Avatar
Odpovídá na roman.labovsky
Michal Šmahel:30.6.2015 23:16
preg_match_all('/<img src="js\/uploads\/.+"(.+)?( \/)?>/', $this->clanky[$i]["obsah"], $matchs, PREG_PATTERN_ORDER);

No, nevím, jestli to půjde, píši to pozdě a navíc na telefonu, kdyžtak ti to někdo opraví nebo ti to přepíši.
Jedná se o regulární výrazy.
Do '//' se vkládá výraz. Místo / můžeš použít i např. %. Výraz se skládá z řetězce, který je přizpůsibený všem situacím. Používáme zde opakování +, * a {}. Pokud použiješ +, daná část tam musí být alespoň jednou a poté na počtu nezáleží. U * je to podobné, ale nemusí ta být vůbec. Pomocí {} si určíš přesný počet opakování. {4, 7} znamená, že tam musí být min. 4 krát a max. 7 krát. Poté je ještě ?. Otazník značí 0 nebo 1 opakování (jestli to tam bude nebo ne). Poté máme možnost použít jakýkoliv znak pomocí . (tečky - žolíku) nebo znaky určíme pomocí [],do nich vypíšeme znaky. Můžeme použít a-z, A-Z, 0-8, což značí rozsahy. Také si můžeme tvořit různé podvýrazy pomocí (), mohou pomoci např. při opakování. Také se na ně nechá odkazovat pomocí \id, kde id je pořadové číslo závorky. To byl takový rychlokurs, s regulárními výrazy toho jde spoustu, projdi si internet, jsou tam i české návody.

Editováno 30.6.2015 23:16
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
30.6.2015 23:16
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
roman.labovsky:30.6.2015 23:40

Ano, děkuji, hledal jsem ještě lépe a řešení jsem již nalezl i pochopil. Jinak samozřejmě děkuji za odpověď. :)

 
Nahoru Odpovědět
30.6.2015 23:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.