Avatar
roman.labovsky:

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 (ceskyDJ):
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í
+1 bodů
Řešení problému
Nahoru Odpovědět  ±0 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 (ceskyDJ)
roman.labovsky:

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.