Autor Zpráva
dzutango
Profil *
Jsem začáteční a naprogamoval jsem si následující skript. Přikazy jsou:
Projdi adresar, pokud najdes soubor a nejsi to ty, tak se podivej zda se v nem nenachazi "<div class="upozorneni">#1</div>", pokud ano, uloz nazev souboru a text z <h1>...</h1> do pole $prislusenstvi , pokud ne uloz nazev souboru a text z <h1>...</h1> do pole $soubory.. Pak oboje pole setřiď podle abecedy. Kod je funkční, zajímá mě jen ,jestli by to šlo udělat lépe.

          <?php
          $i=0;
          $a=0;
          $y=0;
          $b=0;
          $adresar = opendir(".");
          while ($soubor = readdir($adresar)) {
                if(is_file($soubor) and $soubor!="index_php.php"){
                  $text=file_get_contents($soubor, "r");
                  if (preg_match('|<div class="upozorneni">#1</div>|', $text, $matches)) {
                   $prislusenstvi[$y][$b]=$soubor;
                    $b++;
                   $text=file_get_contents($soubor, "r");
                   // echo($soubor) //kontrola nacteni obsahu souboru do promene v php
                    preg_match('|<h1>([^<]*)</h1>|', $text, $matches); /* funkce pro hledani retezce*/
                    //echo($a . " " . $i . "<br>");
                    $prislusenstvi[$y][$b] = $matches[1];
                    $b=0;
                    $y++;
                  }
                  else{$soubory[$i][$a]=$soubor;
                    $a++;
                   $text=file_get_contents($soubor, "r");
                   // echo($soubor) //kontrola nacteni obsahu souboru do promene v php
                    preg_match('|<h1>([^<]*)</h1>|', $text, $matches); /* funkce pro hledani retezce*/
                    //echo($a . " " . $i . "<br>");
                    $soubory[$i][$a] = $matches[1];
                    $a=0;
                    $i++;}
                }}
          closedir($adresar);
          sort($soubory);
          sort($prislusenstvi);
          
          print_r($soubory);   //kontrolni vypis pole*/
          print_r($prislusenstvi);
           ?>
Nox
Profil
No vylepšovat jde vše, no pokud se sám chceš zlepšovat, tak:

Začal bych nějakým zpřehledněním; sladěním formátování (mezery, odsazení, nové řádky...); přejmenováním proměnných $i, $a, $y, $b na smysluplnější; pokud kontroluješ jen existenci, nemusí mít preg_match 3. argument ... a většinou se upřednostňují str* (nebo str_*) funkce (tady strpos), ale slyšel jsem o případech, kdy byl regulár paradoxně rychlejší
Z nějakého důvodu je tam načítání z toho stejného souboru 3x
dzutango
Profil *
Nox:
Díky, většinu jsem upravil ,jen mě nenapadá jak pojmenovat $i, $a, $y, $b :D
dzutango
Profil *
Ještě dotaz, jakto že nevadí když je v html místo <div class="upozorneni">#1</div> ALE <div class="upozorneni"> #1 </div>
Myslel jsem že s tím bude problém.
Nox
Profil
Je otázka, jestli to má brát oboje, nebo jen to první. Podle zadání striktně jen to první a tak by to i mělo fungovat podle tohodle skriptu. Pokud i druhé, přidalo by se \s* kolem #1
dzutango
Profil *
Teď to právě bere oboje, což chci..

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