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:

Kód: Vybrat vše

Creation Date: 1999-11-09


Když hledám totéž o českých stránkách, zobrazí se:

Kód: Vybrat vše

registered:   07.10.1996 02:00:00


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? :shock:

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 :smile: ). Č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?