Autor Zpráva
muflik
Profil *
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 '/'
.. ja na ty vyhledané řetězce chci použít substring funkci a vyparsovat pouze ten vygenerovaný kód. Děkuji.
mckay
Profil
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
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 *
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 *
aha na to slouži preg_match_all tak už nic :) tak ještě jednou děkuju :)
mckay
Profil
muflik:
Zkus nějakej trýček ve kterém bude figurovat strýček google a preg_match_all.

//tak pozdě.
AM_
Profil
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: