Reguláris kifejezés illeszkedjen sortörésre is
Sziasztok!
Meg szeretném kérdezni, ti már találkoztatok-e hasonló jelenséggel?
Egy könyvtárban van sok-sok kép, amik sajnos kis és nagy betűk összevisszaságából áll. Készítettem egy kis rutint, ami átnevezi azokat kisbetűssé. Ez idáig rendben van.
Most ott tartok, hogy egy másik rutin beolvassa a könyvtárban található összes html file-t, és preg_match_all eljárással kikeresi az összes img tag src attribútumát, majd kisbetűssé alakítja és kicseréli az eredeti pozícióban.
Ez a kód:Az a gond, hogy az oldalakat azt hiszem Front Page-el szerkesztették, és valami halál hülye kód formázással tökéletesen széttördeli a html kódot, ezért e preg_match_all nem talál egyezőséget. Valahogy így:Van lehetőség arra, hogy a minta figyelmen kívül hagyja az adott tag-en belüli sortöréseket?
Vagy lehet olyan mintát készíteni, ami egy html tag-ben a kezdő < és a végződő > kacsacsőrök között, az összes sortörést kiszedi?
Gondoltam rá, hogy a file beolvasása közben kiszedek minden '\n' -t, de akkor tökéletesen összeomlik a html file formázottsága (már amit nem tesz tönkre a FP).
Válaszaitokat előre köszönöm, üdv
s_volenszki
■ Meg szeretném kérdezni, ti már találkoztatok-e hasonló jelenséggel?
Egy könyvtárban van sok-sok kép, amik sajnos kis és nagy betűk összevisszaságából áll. Készítettem egy kis rutint, ami átnevezi azokat kisbetűssé. Ez idáig rendben van.
Most ott tartok, hogy egy másik rutin beolvassa a könyvtárban található összes html file-t, és preg_match_all eljárással kikeresi az összes img tag src attribútumát, majd kisbetűssé alakítja és kicseréli az eredeti pozícióban.
Ez a kód:
preg_match_all("/(<img .*?src.*?=.*?\")(.*?)(\".*?>)/", $file_tartalom, $eredmeny);
...
<tr>
<td align="center"><font color="#FFFFFF" size="2"
face="Arial"><img
src="hegy.JPG"
width="360" height="245"></font></td>
<td align="center"><font color="#FFFFFF" size="2"
face="Arial"><img
src="mozaik.JPG"
width="360" height="245"></font></td>
</tr>
...
Vagy lehet olyan mintát készíteni, ami egy html tag-ben a kezdő < és a végződő > kacsacsőrök között, az összes sortörést kiszedi?
Gondoltam rá, hogy a file beolvasása közben kiszedek minden '\n' -t, de akkor tökéletesen összeomlik a html file formázottsága (már amit nem tesz tönkre a FP).
Válaszaitokat előre köszönöm, üdv
s_volenszki
s módosító
Érdemes még az U módosítót is használni, hogy a .*-ok ne zabálják be az utánuk következő részeket, vagy pl az src utáni .*-ot [^=]*-ra, az = utánit [^\"]*-ra cserélni (vagy méginkább \s*-ra) :
mohó, nem mohó
Üdv,
Felhő
A kérdőjeles kvantor ugyanazt csinálja, mint az U módosító
Értem
Nem akarja az igazságot!
Köszönöm a segítséget. Hozzá adtam az "s" módosítót, és valóban, minden sortörést értelmez, de csak azokat, amelyek a megtalálandó paraméter után találhatóak, azaz ha a soremelés az <img után található, akkor továbbra sem talál illeszkedést!
Végülis, ezt már tudom kezelni, mert megkerestetek a file-ban minden <img-t és ha a következő karakter kód 10, akkor azt kicserélem space-re.
Köszönöm a segítségeteket, üdv:
s_volenszki
kell regularis kifejezes?
strpos()-sal megkeresnem az src=" karaktersort, majd egy strtolower()-rel atirnam a legkozelebbi "-ig terjedo string szakaszt
tudom, hogy nem tul emelkedett megoldas, de gyorsan meglehetsz a koddal...
elsőre
strpos()
Ezt itt most kb annyi ideig tartott leirni, mint magat a kodot :)
igaz
...én is kerülöm a reguláris kifejezéseket...
Ne érts félre, nem vagyok szellemi fogyatékos, bármilyen, számomra ismeretlen programozái nyelveben összehozok egy rutint kb. fél óra altt, de ez még nem megy (na meg az assembler)!
Olvastam egyszer itt a weblaboron (innen hivatkozott egy cikkre a weblabor) ahol arról volt szó, ki hogyan tud programozást tanulni (sajna már nem tudom a hivatkozást). Én a "Hello world!" típus vagyok, és ehhez a tanulástechnikához megfelelő regexp doksit még nem találtam.
s_volenszki
szerintem hiba nem megtanulni
Üdv,
Felhő
Köszönöm!
Én már régóta érzem a benne rejlő erőt, sokszor használtam is, de mindíg ti segítettetek!
Megküzdök ezzel is! Amennyire erőmből telik, és tudáséhségem igényli!
s_volenszki
nem kerulom a regularis kifejezeseket
Ugy ereztem, hogy most ilyen helyzet allt elo, azert javasoltam az alternativat.
Készen vagyok!
Elkészült a "remekmű" és sikeresen elvégezte a feladatát!
Megköszönve a segítségeteket, íme a kód! Felhő által ajánlott doksi alapján egy kicsit megvariáltam, a mintát, mert nekem valójában teljesen mindegy, hogy csak az src atributumban lévő szöveget konvertálom kisbetűssé, vagy az egész taget (<img...>). Igaz az alt-ok megsínylették, de amúgy is csak tőszavak voltak! :)
s_volenszki
Saját életedet megkönnyítendő
Ajjaj...
Kíváncsian várom válaszodat, üdv
s_volenszki
Egyszerübb írásmód
file_get_contetnst, file_put_contents
Ezenkívül szerintem a kód második felét teljesen meg tudnád úszni
preg_replace és az e módosító használatával (preg_replace("/.../e",
"strtolower('\\1')", $content)).
Üdv,
Felhő
u.i.: Már tegnap küldtem volna, a szerver nem engedte át.
Húha!
El is kezdem átdolgozni a rutint ennek fényében!
Köszönöm a figyelmeteket,
s_volenszki