Stránka 1 z 1
Pomoc s úpravou regulárního výrazu
Napsal: 27 lis 2011 17:01
od Rimmer
Ahoj, potřeboval bych pomoc s úpravou jednoho regulárního výrazu. Koupil jsem script na zahraničních stránkách a funguje OK pro zahraniční stránky, jenže ne pro domácí. Po chvíli zkoumání jsem zjistil, že to je jen v jiném formátu vypisování info o domácích webech. Jde o info, kdy byl web založený. Když hledám datum založení u zahraničních webů, zobrazí se výjezd ve tvaru:
Když hledám totéž o českých stránkách, zobrazí se:
Ve scriptu jsem našel místo, kde podle mě dochází k chybě. Potřeboval bych ho přepsat, přizpůsobit tomu, co vyjíždí u českých webů:
preg_match('#Creation Date: ([a-z0-9-]+)#si', $data, $p);Poradí někdo?

Re: Pomoc s úpravou regulárního výrazu
Napsal: 27 lis 2011 17:53
od CZechBoY
preg_match('#(Creation Date|registered): ([a-z0-9-]+)#si', $data, $p);
zkus
Re: Pomoc s úpravou regulárního výrazu
Napsal: 27 lis 2011 19:36
od Rimmer
Dík za pokus, ale pořád to nejede. Zkoušel jsem vypsat $p, ať vím, jestli to vůbec něco načte, jenže je prázdný. Potřeboval bych vysvětlit tohle ([a-z0-9-]+)#si, co to přesně znamená?
a-z0-9 chápu jako hledej jakýkoliv znak a-z a jakýkoliv číslo, jenže co ta pomlčka za devítkou na konci a co to plusko za hranatou závorkou?
Re: Pomoc s úpravou regulárního výrazu
Napsal: 27 lis 2011 20:52
od CZechBoY
pomlčka :)
jojo já zapoměl na zpětný lomítko
preg_match('#(Creation\ Date|registered): ([a-z0-9-]+)#si', $data, $p);
Re: Pomoc s úpravou regulárního výrazu
Napsal: 27 lis 2011 23:48
od Rimmer
Tak nakonec byl hlavní problém v oddělovači datumu (tohle zjištění mě stálo 3 hodiny mýho života

). Český datum se odděluje tečkou, zatímco v původním výrazu byl oddělovač pomlčka. Takže teprve to dole mi začlo fungovat tak, jak jsem potřeboval:
preg_match('#registered: ([a-z0-9\.]+)#si', $data, $p);
Re: Pomoc s úpravou regulárního výrazu
Napsal: 28 lis 2011 16:18
od CZechBoY
to ti ale nebude fungovat na obě verze..
nenapsal si konkrétní příklad takže jsem nemohl napsat konkrétní řešení ani já
hold popis problému je vždy nejtěžší úkol, odstranit problém je už pak hračka
Re: Pomoc s úpravou regulárního výrazu
Napsal: 28 lis 2011 17:26
od Rimmer
Máš pravdu, ještě to chce trochu doladit, aby byl skript univerzálnější a je fakt, že je těžký poradit bez úplnýho zadání. Zkusím tam zapracovat tu tvojí verzi s "NEBO".
No a ještě jedna věc, dokážeš mi říct, co znamená to "#si" téměř na konci výrazu?? Prošel jsem několik stránek o výrazech a tohle jsem nikde nenašel, nechápu co to má být??
Re: Pomoc s úpravou regulárního výrazu
Napsal: 28 lis 2011 19:24
od CZechBoY
nikde nenašel? no sakra :(
s je příznak an zpracování reguláru na všech řádcích
i je příznak na non-case-sensitive, prostě nebrat v potaz velikost písmen
preg_match('#(Creation\ Date|registered: ): ([a-z0-9-\.]+)#si', $data, $p);
Re: Pomoc s úpravou regulárního výrazu
Napsal: 01 pro 2011 20:52
od Rimmer
OK, dík za info. Jinak ta tvoje verze s | coby "NEBO" nějak nefunguje. Prozatím jsem to vyřešil podmínkou if, není to úplně ideální, no ale skript jede.
Re: Pomoc s úpravou regulárního výrazu
Napsal: 01 pro 2011 21:12
od CZechBoY
nechápu jak to nemůže jít, když mě to šlo
pošleš ty ukázkový data?