Zkratka na hlavní stranu: Alt + Shift + horní 2(ě)
Linkedin FB e-mail Google Plus Twitter

Hledat na tomto webu

 
 

PHP – Výběr náhodných obrázků z adresáře na serveru
Náhodné soubory s požadovanými příponami, zadaný počet nebo všechny,

 

Vytvořeno
17. 6. 2013

 

PHP funkce pro náhodný výběr zadaného počtu souborů (nebo všech, pokud jich není dostatek; nebo všech, pokud je to zadáno)
s požadovanými příponami ze zadaného adresáře na serveru (hostingu).

Typicky pro výběr a vložení potřebného počtu náhodných obrázků, např. partnerů projektu, sponzorů, referencí, ukázek, nebo ilustrační a dekorativní grafiky.

//Martin Adámek, www.adamek.cz
/////////////////////////////////////
//$pripony                 Seznam povolených přípon (á 3 nebo 4 znaky)   
//$cesta                   Cesta k prohledávanému adresáři na hostingu (bez koncového lomítka) 
//$kolik                   Názvy kolika souborů mají být vráceny (0 == všechny) 
///////////////////////////////////// 

  //Zjištění názvů náhodných souborů požadovaných přípon požadovaného počtu v požadovaném adresáři
  function vrat_nahodne_nazvy_souboru_z_adresare($pripony = array('jpg','jpeg','png'), $cesta = '', $kolik = 1) // V definici funkce uvedeny výchozí hodnoty vstupních proměnných, které se implicitně použijí, když dané proměnné nebudou při volání funkce explicitně zadány 
    { //Inicializace
      $kolik = intval($kolik);        //Ošetření textů, desetinných čísel a jiných nehezkých hodnot //Při chybě nebo poli na vstupu vrací 0 nebo 1
      if ($kolik < 0) $kolik = 0;     //Ošetření záporného vstupu 
      $soubory = array();             //Pro nalezené vyhovující soubory
      $ktere = array();               //Pro klíče odkazující na vybrané názvy souborů
      $vysledek = array();            //Pro výběr k vrácení (vybrané názvy souborů)

      //Načtení názvů vyhovujících souborů
      $adresar = opendir($cesta); 
      while ($soubor = readdir($adresar)) 
        if ( in_array( substr($soubor, strlen($soubor)-3, 3), $pripony) or in_array( substr($soubor, strlen($soubor)-4, 4), $pripony) ) // Pozn.: pro výpis souborů všech přípon bez tohoto omezení nutno vyfiltrovat adresář a nadřazený adresář: $soubor!='.' and $soubor!='..'  
          $soubory[] = $soubor;
      closedir($adresar);

      //Výběr hodnot k vrácení
      if (/*count($soubory) <= 1 or */ $kolik == 0 or count($soubory) <= $kolik)  // Nutno vrátit vše nalezené
                                                                                  //  Platné podmínky: Chce všechny; nebo se jich našlo méně než je požadováno
                                                                                  //  Zakomentovaná podmínka: Našel se žádný nebo jeden (netřeba samostatně řešit, řeší to další dvě podmínky, když nahoře zajišťujeme, že $kolik>=0 a je celé číslo)      
          $vysledek = $soubory;                                                   // Vracíme všechny  
      
      else                                                                        // Nutno vybrat jen požadovaný počet
        { $ktere = array_rand($soubory,$kolik);        
          if ($kolik == 1)                                                        // array_rand vrací přímo klíč
            $vysledek[] = $soubory[$ktere];                                       // Ale tato funkce ho vrátí jako první prvek pole, aby šlo výsledky zpracovávat jednotným způsobem
          else                                                                    // array_rand vrací pole klíčů
            foreach ($ktere as $ktery) $vysledek[] = $soubory[$ktery];
        }                                                                                      
      return $vysledek;         //Pole s názvy souborů s požadovanými příponami v požadovaném adresáři      
    }


  //Vložení obrázků s logy partnerů projektu
  function vlozlogapartneru()
    {     
      $soubory=vrat_nahodne_nazvy_souboru_z_adresare(array('jpg','jpeg','png','gif'), '/img/logotypes', 2);            
      echo '<div id="partneri">';
        foreach ($soubory as $soubor) echo '<img src="img/logotypes'.$soubor.'" alt="Partner projektu" title="Partner projektu" />'; // I když v tomto případě by se do altu správně měl psát přímo konkrétní název firmy (text viditelný na obrázku), což se tu neděje //V případě čistě dekorativního nebo jinak obsahově opravdu bezvýznamného obrázku nechte alt prázdný
      echo '</div>';      
    }

Funkce array_rand() sice vrací při různých volání různé výsledky (pokud má z čeho vybírat a není nucena vrátit všechno),
zato ale vždy ve stejném vzájemném pořadí vybraných prvků.
Pro zamíchání pořadí lze použít funkci shuffle().

Skok nahoru na: Navigační menu
(klávesová zkratka Alt + Shift + horní „5”)

Zaujala Vás tato stránka?

  • Přidat do záložek (Ctrl+D)
  • Sdílet odkaz (vysílačka)Skok nahoru na:
  • Vytisknout (Ctrl+P)
  • Citovat podle ČSN ISO 690

    Tuto stránku

    ADÁMEK, Martin. PHP – Výběr náhodných obrázků z adresáře na serveru: Náhodné soubory s požadovanými příponami, zadaný počet nebo všechny,. Martin Adámek [online]. Náchod / Meziměstí [cit. 2024-11-23]. Dostupné z: https://www.adamek.cz/sw/php/nahodny-vyber-obrazku

    Celý web

    ADÁMEK, Martin. Martin Adámek [online]. Náchod / Meziměstí [cit. 2024-11-23]. Dostupné z: https://www.adamek.cz

 

 
 

Národní kulturní dědictví

WebArchiv – Stránky archivovány Národní knihovnou ČR Tyto stránky jsou pravidelně archivovány Národní knihovnou ČR pro svou kulturní, vzdělávací, vědeckou, výzkumnou nebo jinou informační hodnotu za účelem dokumentace autentického vzorku českého webu. Jsou součástí kolekce českých webových stránek, které NK ČR hodlá dlouhodobě uchovávat a zpřístupňovat pro budoucí generace. Jejich záznam je součástí České národní bibliografie a katalogu NK ČR.  

 

 
 

Pro rozptýlení

Přijmou do firmy nového zaměstnance a vezme si ho do parády mistr:
„Tak tady máš koště, mladej, a jdi zamést halu.”
„Ale já jsem inženýr?!”
„Aha…”, škrábe se mistr na hlavě, „tak já ti to ukážu.”

 

Pro zamyšlení

Kvalita člověka se pozná podle počtu jeho nepřátel.
[(Měl jsem za to, že něco v tom smyslu řekl Karel Čapek,
ale když jsem si vzpomněl, že ten citát nemám na webu, tak jsem nedohledal ani citát, ani jeho autora. Ale asi někdo něco takového řekl, i když jsem to sem napsal z hlavy.)]