Autor | Zpráva | ||
---|---|---|---|
muflik Profil * |
#1 · Zasláno: 13. 2. 2010, 18:01:55
zdravím potřeboval bych poradit..
$test = '<iframe src="http://stranka.com/adresar/nejaky-vygenerovany-kod-89adsad87as0d0a/"></iframe>'; preg_match('^iframe src="http:////stranka.com//adresar//.+"$',$test, $matches); echo $matches[0]; a hodí mi to chybu Warning: preg_match() [function.preg-match]: No ending delimiter '^' hledám jen řetězce, které zařínají takto: ^iframe src="http:////stranka.com//adresar// potom mají libovolný počet (min 1) libovolného znaku: .+ a končí retezcem: "$ v různých návodech vidím, že lidi dávají před a za ^ $ lomitka napr ('/^tralala$/') ale nevím proč, to mi pak háže zase chybu Unknown modifier '/' |
||
mckay Profil |
#2 · Zasláno: 13. 2. 2010, 18:08:57
muflik:
když používáš preg_x, nepoužívá se znak ^ a $ k označení začátku a konce (možná že se v php nepoužívají vůbec, ale jenom v perlu). Místo "^" a "$" dej na začátek a konec "/". |
||
Nox Profil |
#3 · Zasláno: 13. 2. 2010, 18:09:08
regulární výraz v preg_ funkcích musíš ohraničit tzv. delimiterem, čili oddělovačem, je to nějaký znak co si zvolíš (nevím nakolik libovolný) a umístíš ho na začátek a konec reguálního výrazu (za ukončujícím delimiterem můžou být ještě modifikátory, viz manuál)
takže např.: /regulár/ /[a-z0-9]{2,3}/ pokud výraz obsahuje stejný znak jako je delimiter, musíš ty uvnitř escapovat přidáním \, čili \/ proto je lepší volit znak, který se uvnitř nevyskytuje obvyklé delimitery: / # ~ |
||
muflik Profil * |
#4 · Zasláno: 13. 2. 2010, 18:40:52
Děkuju moc už mi to funguje :)
jen ale taková maličkost.. jak můžu udělat aby mi to vytvořilo pole všech výsledků, které vyhovují? mám zatím $test = "iframe tralala iframe tralala iframe"; preg_match('~iframe~',$test, $matches); echo "pocet vysledku: ".count($matches)."; mi vypíše 1 záznam, ale podle mě by měly být 3. :P |
||
muflik Profil * |
#5 · Zasláno: 13. 2. 2010, 18:43:06
aha na to slouži preg_match_all tak už nic :) tak ještě jednou děkuju :)
|
||
mckay Profil |
#6 · Zasláno: 13. 2. 2010, 18:46:04 · Upravil/a: mckay
muflik:
Zkus nějakej trýček ve kterém bude figurovat strýček google a preg_match_all. //tak pozdě. |
||
AM_ Profil |
#7 · Zasláno: 13. 2. 2010, 19:55:28 · Upravil/a: AM_
mckay:
„když používáš preg_x, nepoužívá se znak ^ a $ k označení začátku a konce“ není pravda!! znaky ^ a $ označují začátek a konec řetězce v porovnávaném řetězci, delimitery označují začátek a konec reg. výrazu (za nimi se mohou nacházet modifikátory, např. i - case insensitive). Příklad: preg_match('~bcd~i', 'abcde'); //true preg_match('~^bcd~i', 'abcde'); //false, bcd není na začátku porovnávaného řetězce preg_match('~bcd$~i', 'abcde'); //false, -//- na konci |
||
Časová prodleva: 16 let
|
0