Reguláris kifejezés
Sziasztok,
a preg_match függvényt próbálgatnám, pl. a következő karakterláncból:
"ezegysövegblabla azonosito1='22' szovegtobabbbbfbf"
hogyan lehetne kinyerni az azonositó értékét. Ezzel próbálkoztam:
preg_match ("/azonosito=[']{0,1}([']+)", $valtozo, $talaltok);
Tud ebben valaki segiteni? Előre is köszönöm.
■ a preg_match függvényt próbálgatnám, pl. a következő karakterláncból:
"ezegysövegblabla azonosito1='22' szovegtobabbbbfbf"
hogyan lehetne kinyerni az azonositó értékét. Ezzel próbálkoztam:
preg_match ("/azonosito=[']{0,1}([']+)", $valtozo, $talaltok);
Tud ebben valaki segiteni? Előre is köszönöm.
próbáld ki ezt:
Ez müködik köszi én
preg_match("/parent\d*='(.*)'/",$row[2],$matches);
és ezzel azt is meg lehetne oldani, hogy figyelje pl. azt, hogy a szám esetleg nincs aposztrófban, vagy ha macskakörömben van, tehát valtozo=55 az pl. hogy lenne? Mi változna?
Hol lehet erről magyarul olvasni? Ezeken a cimeken néztem eddig:
http://www.szabilinux.hu/linux_doksi/node603.htm
http://mediacenter.hu/help/php/ref.pcre.html
Bocs a sok kérdezésért.
[q]és ezzel azt is meg
/parent\d* = (['"])? ([^'"]*) (?(1) \1)/
lásd feltételes gyűjtőminták
A PHP kézikönyvben van magyarra fordított leírás. Nem a legjobb kezdőknek, de több a semminél. Ha a fordítás most nem elérhető, az majd javítva lesz lassankint.
ui.: kísérd figyelemmel a weblaboron a készülő-bővülő regex cikksorozatot is!
Szia,
köszi szépen, átolvastam és a cikksorozatot is átolvasom, közben ezt csináltam:
preg_match("/parent\d*=[\"'](.*)[\"']/",$valtozo,$ebbe);
ez visszaadja a macskakörömbe zárt dolgokat is, de ahol nincs se macsakaköröm se aposztróf ott nem jó. Amit te írtál:
/parent\d* = (['"])? ([^'"]*) (?(1) \1)/
preg_match("/parent\d* = (['"])? ([^'"]*) (?(1) \1)/",$row[2],$matches);
az nem akar müködni sajnos.
Kösz mégegyszer.
lemaradt egy x a
/parent\d*=(['\"])? (?P<id>[^'\"]*) (?(1) ['\"])/x
plusz a \1 repjeles hivatkozást \\1-ként kell írni macskakörmök ("") között. Így már jobbnak kell lennie (itt most aposztrófok között, mert azt én jobb szeretem):
A print_r() listában látod majd, h. mi az a titokzatos jelölés a regex közepén ;), bár ez elhagyható.
Szia,
ez müködik szépen, bár a közepét nem értem(még), de utánaolvasok, jó lesz tanulásra. Köszi szépen a segitséget!
nevesített gyűjtés
(?P<id> ...)
ugyanazt tudja, mint a sima(...)
, de ennek használatával nem csak számmal tudsz hivatkozni a begyűjtött részmintára, hanem a <> között megadott névvel is (az index szerinti elérés továbbra is megmarad).Ez azért jó, mert ha megváltozik a ()-k sorrendje vagy száma, akkor sem kell újraírni/nézni az alkalmazást, ahol a
$matches
tömböt használod. Ebben a mintában is ez volt a helyzet, mert ahhoz, h. nagyon jól működjön kénytelenek voltunk a paraméter gyűjtése előtt új gyűjtő zárójelet használni, amitől az eredetileg 1. indexű elem a 2. helyre csúszott.Szia,
nagyon köszi a választ és a példákat, ennek jobban utána kell járnom, köszi a hivatkozásokat is - sokat segitettél!