Karaktersorozatból számok kinyerése megadott pozícióból
Sziasztok!
Adott egy filenev ami akár egy karaktersorozat is lehetne, amelynek a nevéből szeretnék kinyerni 2 különboző számot.
A filenév így épül fel:
valamix()600y()700.jpg
A valami szó nem fix, a hossza változik.
A 2 szám is változik, nem minden esetben 3 számjegyű. (2-4 számjegy között fog mozogni)
Ami fix, hogy az x()után jön egy szám és az y() után jön egy szám. Ez a 2 szám kellene nekem.
Szerintem pregmatch-al kellene megoldani, de nem nagyon vágom ezt a témát sajnos. Előre is köszönöm a segítséget!
■ Adott egy filenev ami akár egy karaktersorozat is lehetne, amelynek a nevéből szeretnék kinyerni 2 különboző számot.
A filenév így épül fel:
valamix()600y()700.jpg
A valami szó nem fix, a hossza változik.
A 2 szám is változik, nem minden esetben 3 számjegyű. (2-4 számjegy között fog mozogni)
Ami fix, hogy az x()után jön egy szám és az y() után jön egy szám. Ez a 2 szám kellene nekem.
Szerintem pregmatch-al kellene megoldani, de nem nagyon vágom ezt a témát sajnos. Előre is köszönöm a segítséget!
preg_match
Pattern syntax
Ha most megvárod, míg kapsz konkrét megoldást, akkor nemsokára megint itt leszel a következő hasonló problémánál, ami senkinek sem jó. Szedd össze a bátorságod, nem olyan bonyolult az egész.
Ez kb annyi volt, hogy van
Ha egyszer kapnék egy használható példát amiből kiindulhatok akkor megtanulnám. Bár találtam több példát is magyarul, de ha valamit módosítok a példákban egyből nem nem megy a script.
Konkrétan itt nézelődtem:
http://vbence.web.elte.hu/regex_leiras.html
Ha annyira érteném akkor nem tettem volna fel kérdést.
Igen
Ha van konkrét kérdésed, hogy mit nem értesz, írd le nyugodtan, segítünk.
Hát első körben nem copy
Hát próba szerencse alapon megkérdezem...
Hogyan lehet azt megoldani, hogy egy adott egy változóban az első karaktertől kezdve egy megadott karakterig törölje a karaktereket és adja vissza a változó értékét a módosított verzióban.
Ha így se érted hogy mennyire nem vágom a dolgot akkor egy konkrét példa:
Az előbb említett linkben van egy példa:
$datum = "2006. 07. 22.";
ereg ('([0-9]{4})[^0-9]*([0-9]{2})[^0-9]*([0-9]{2})', $datum, $talalat);
var_dump ($talalat);
Itt a {2} adja meg, hogy hány karaktert írjon ki (hónap és nap). Ha ezt módosítom, pl 3-ra, nem jelenik meg semmi. Szóval ilyen alap dolgokkal se vagyok tisztába, ezért szerettem volna egy használható segítséget kérni.
Pedig a fenti link leírja mit
[0-9]
, mit jelent a{4}
, sőt minden többi elemet is, amit a kifejezés tartalmaz.1, ne ereg függvényeket
2, vbence leírásából:
Segítségével megadható minimum és maximum vagy pontosan megadott számú előfordulás - {3} pontosan 3 előfordulás; {3,} legalább 3 előfordulás; {2,5} legalább 2 legfeljebb 5 előfordulás; {,10} legfeljebb 10 előfordulás.
Hogyan lehet azt megoldani,
strpos, substr
$datum = "2006. 07.
ereg ('([0-9]{4})[^0-9]*([0-9]{2})[^0-9]*([0-9]{2})', $datum, $talalat);
var_dump ($talalat);
Itt a {2} adja meg, hogy hány karaktert írjon ki (hónap és nap). Ha ezt módosítom, pl 3-ra, nem jelenik meg semmi. Szóval ilyen alap dolgokkal se vagyok tisztába, ezért szerettem volna egy használható segítséget kérni.
A lényegét érted, hogy mire való a regex és hogy működik elméletben? Nem a konkrét patternekre, modifierekre irányul a kérdésem. Ezt azért kérdezem, mert ebből nekem az jön le, hogy ezzel nem vagy tisztában. 3-ra átírva a 2-t nyilván nem fog működni, mert nem 3 számjegyből áll a hónapok, napok száma. Ez nem azt jelenti, hogy hány karaktert ír ki, hanem hogy mire illeszkedik a leírt minta. Mert itt ugye mintákat írunk le. Ha ez megvan, akkor javaslom, hogy egyszerű példákkal kezdj el kísérletezni. Hamar bele lehet lendülni az alapokba, nem egy agysebészet, csak talán fura első blikkre.
Itt van egy online regex tester: http://regexpal.com/
Nem kertelek, 100% nem értek
Köszönöm mindenkinek a segítséget, valahogy csak megtanulom talán ezeket a reguláris dolgokat...
Ha nem akarod megtanulni a
x()
ésy()
stringeket. Majd veszed az utána következő 4 karaktert a substr segítségével, ebből megvizsgálod, hogy melyik karakter nem szám már, és ezek lesznek a számaid.Ilyen megoldással már
A Reguláris kifejezések
Hát ez is több mint a
Esetleg valami ingyenes letölthetőséget nem tudsz? Mondjuk még fizetőset se nagyon találtam.
Gondolom könyvtárban,
http://www.regular-expression
http://www.regular-expressions.info/tutorial.html
Köszönöm, úgy látom mégis van
nehéz-e?