21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
check
Profil
Ahoj,
zkoušel jsem nastudovat regulární výrazy, ale nejde mi to, tak se obracím s prosbou na profíky.

Potřeboval bych napsat regulární výraz, který po projetí stažené stránky vypíše v $matches aktuální devizový kurz EUR nákup.
Děkuji

<?php
$url = "http://www.fio.cz";
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; 

Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 

3.5.30729) ");
  $data = curl_exec($ch);
  curl_close($ch);

$tagRegExp = 'regulární výraz, který mi zjistí kurz EUR nákup';
preg_match($tagRegExp, $data, $matches);
$nadpis = $matches[3];

echo ($nadpis);

?> 
Keeehi
Profil
Těch regulárů může být spousta. Čím je konkrétněší, tím je více náchylný na změny v html kódu v tom místě stránky, čím více je obecný, tím je větší riziko, že začne nacházet něco jiného, když se stránka změní jinde.
Celkem primitivní a dost konkrétní by mohl vypadat takto:
<td class="tleft"><strong>EUR</strong></td><td class="tright">([^<]*)</td>
check
Profil
Keeehi: Když to vložím do apostrofů za proměnnou $tagRegExp, tak to nefunguje. Stejně tak to nefunguje, když to opásám %.
Dan Charousek
Profil
Co místo reguláru použít DOMElement?
check
Profil
Prosím předložte mi nějaké řešení, které mi vyhodí hodnotu kurzu Eura, jestli to bude s DOM parserem nebo regulárním výrazem je jedno. Hlavně aby to celé fungovalo - pošlete mi prosím kompletní php script. Já už na to nemám se v tom hrabat kvůli jedný kravině - zešedivím z toho.
check
Profil
Kolegové na webtrhu mi pomohli s regulárním výrazem, tak sem dávám pro úplnost výsledek, děkuji všem.

<?php
  
  $url = "http://www.fio.cz";
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; 

  .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) ");
  $data = curl_exec($ch);
  curl_close($ch);
  preg_match('~<strong>EUR</strong></td><td class="tright">(\d+,\d+)</td>~s', $data, $match);
  echo $match[1]; 

?> 

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:

0