Centar za edukaciju-BiH


switch Lista naslova: PHP trikovi

#41 05.02.2022 13:10
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Jedinstveni id
Možda postoje situacije u kojima morate generirati jedinstveni niz. Neki ljudi koriste funkciju md5() za ovo, iako nije baš namijenjena za ovu svrhu:
PreuzmiIzvorni kôd (PHP):
  1. echo uniqid() . "<br>";
  2. echo uniqid('neki string_') . "<br>";
  3. echo uniqid('nekistring_',true) . "<br>";

Možda ćete primijetiti da iako su stringovi jedinstveni, izgledaju slično za prvih nekoliko znakova. To je zato Å¡to je generirani niz povezan sa vremenom servera. Ovo zapravo ima lijepu nuspojavu, jer svaki novi generirani ID dolazi kasnije po abecednom redu, tako da se može sortirati.

Da biste smanjili Å¡anse da dobijete duplikat, možete proslijediti prefiks ili drugi parametar za povećanje entropije:
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#42 05.02.2022 13:35
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Pretvaranje variabli u string
Postoje dva nacina pretvaranja variabli u string:
-serialize()
PreuzmiIzvorni kôd (PHP):
  1. // a complex array
  2. $var = array(
  3.         'pozdrav',
  4.         433,
  5.         array(1,'niz u nizu'),
  6.         'prvi niz'
  7. );
  8.  
  9. //konvertovanje u string
  10. $string = serialize($var);
  11.  
  12. echo $string;
  13. //nazad u variable
  14. $nova_var = unserialize($string);
  15.  
  16. print_r($nova_var) . "<br>";
  17. echo $nova_var[0] . "<br>";
  18. echo $nova_var[2][1] . "<br>";

-json_decode()
// a complex array
PreuzmiIzvorni kôd (PHP):
  1. $string = json_encode($myvar);
  2. $var = array(
  3.         'pozdrav',
  4.         433,
  5.         array(1,'niz u nizu'),
  6.         'prvi niz'
  7. );
  8. $nova_var = json_decode($string);
  9. print_r($nova_var) . "<br>";
  10. echo $nova_var[0] . "<br>";
  11. echo $nova_var[2][1] . "<br>";
[/code]
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#43 05.02.2022 13:55
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Kompresovanje stringa
String mozemo kompresovati bez da to radimo nekim arhiverom:
PreuzmiIzvorni kôd (PHP):
  1. $string ="Obratite paznju na desnoj strani \"Izdvojeno\", tu se slucajno odabrane teme vrte pa je moguce da one trzaju kod skrolovanja.
  2. Ako imate volje mozete upisati;
  3. -broj clanova koji su bili prisutni kad vam je blokiralo
  4. -vrijeme u kojem vam se desavao problem
  5. -browser koji koristite ";
  6.  
  7. $kompresvano = gzcompress($string);
  8.  
  9. echo "Orginalna velicna: ". strlen($string). "<br>";
  10. echo  "<b>Kompresovano:</b><br>" . $kompresvano . "<br>";
  11.  
  12.  
  13.  
  14. echo "Kompresovana veli
  15. ina: ". strlen($kompresvano). "<br>";
  16.  
  17.  
  18. $original = gzuncompress($kompresvano);
  19.  
  20. echo  "<b>Original:</b><br>" . $original . "<br>";

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#44 05.02.2022 17:16
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Vrijeme trajanja procesa
Ovo može izgledati trivijalno. Mozete dodati kod na dno skripte i on se pokreće prije nego Å¡to zavrÅ¡i. Međutim, ako ikada pozovete funkciju exit(), taj kod se nikada neće pokrenuti. Takođe, ako dođe do fatalne greÅ¡ke, ili ako korisnik prekine skriptu (pritiskom na dugme Stop u pretraživaču), opet se možda neće pokrenuti.

Kada koristite register_shutdown_function(), vaÅ¡ kod će se izvrÅ¡iti bez obzira zaÅ¡to je skripta prestala da se izvodi:
PreuzmiIzvorni kôd (PHP):
  1. $start_time = microtime(true);
  2.  
  3.  
  4. // do some stuff
  5. // ...
  6.  
  7.  
  8. function procedura() {
  9.         global $start_time;
  10.  
  11.         echo "trajalo je: ".
  12.                         (microtime(true) - $start_time).
  13.                         " sekundi.";
  14. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#45 09.02.2022 14:04
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:eval funkcija
Funkcija eval() postoji u vecini programskih jezika.
ova funkcijaobradjuje string kao PHP kod.
Niz mora biti važeći PHP kod i mora se zavrÅ¡avati tačkom i zarezom.
Napomena: Naredba return će odmah prekinuti evaluaciju niza.

Ova funkcija može biti korisna za pohranjivanje PHP koda u bazu podataka.

PreuzmiIzvorni kôd (PHP):
  1. <?php
  2. $godine = '45';
  3. $name = 'Bogoljub';
  4. $str = 'Moje ime je: $name a imam $godine godina<br>';
  5. echo $str;
  6. eval("\$str = \"$str\";");
  7. echo $str;
  8. eval( '$str = (20 * 5 - 3);' );
  9. echo "iznos je:" . $str;
  10. ?>

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 1 puta. Posljednja izmjena 09.02.2022 14:07 od strane zxz. ↑  ↓

#46 09.02.2022 16:37
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Zadnji dan u mjeeccu
PreuzmiIzvorni kôd (PHP):
  1. $datum= "17-11-2022";
  2. echo date("t-m-Y", strtotime($datum)). "<br>";
  3.  
  4. $date = new DateTime('17-11-2022');
  5. $date->modify('last day of this month');
  6. echo $date->format('d-m-Y'). "<br>";
  7. echo cal_days_in_month(CAL_GREGORIAN, 11, 2022). "<br>";

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#47 09.02.2022 20:48
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Broj iz stringa
Primjer kako izdvojiti brjeve koji se nalaze u nekom stringu.
PreuzmiIzvorni kôd (PHP):
  1. $string = 'Imam 10 godina staza i platu 1000 BAM  as star sam 50 godina';
  2. preg_match_all('!\d+!', $string, $brojevi);
  3.  
  4. foreach ($brojevi[0] as $value)
  5. {
  6.   echo "$value <br>";
  7. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#48 04.04.2022 19:15
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:VIsedimenzionalni niz array_chunk
Sintaksa
array_chunk (niz, veličina, kljuc)
niz    -Određuje niz koji će se koristiti
veličina-Određuje veličinu segmenta
cačuvati kljuc (Neobavezno) - Moguće vrijednosti:
istina - čuva ključeve
lažno - Zadano. Reindeksira kljuceve

Primjer:
PreuzmiIzvorni kôd (PHP):
  1. $token_array = array('audi',
  2. 'tojota',
  3. 'mercedes',
  4. 'ford',
  5. 'opel',
  6. 'fiat',
  7. 'datsun',
  8. 'volvo',
  9. 'golf',
  10. 'olimpija',
  11. 'volga',
  12. 'lada');
  13.  
  14. print_r(array_chunk($token_array,4));

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#49 10.04.2022 20:45
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Ekstrakcija niza u variable
PreuzmiIzvorni kôd (PHP):
  1. <?php
  2. $a = "nista";
  3. $my_array = array("a" => "jedan","b" => "dva", "c" => "tri");
  4. extract($my_array);
  5. echo "\$a = $a; \$b = $b; \$c = $c<br>";
  6. print_r($my_array);
  7. ?

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#50 29.05.2023 14:33
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Ucitavanje slike na mapu
PreuzmiIzvorni kôd (PHP):
  1. <?php
  2. // Putanja do vase JPEG slike
  3. $slika = 'slika.jpg';
  4.  
  5. // Provjera postojanja EXIF podataka u slici
  6.         if (exif_imagetype($slika) === IMAGETYPE_JPEG && function_exists('exif_read_data'))
  7.         {
  8.         // Citanje EXIF podataka iz slike
  9.         $exif = exif_read_data($slika);
  10.  
  11.         // Provjera postojanja geografskih koordinata (lokacije) u EXIF podacima
  12.         if (isset($exif['GPSLatitude']) && isset($exif['GPSLongitude'])) {
  13.         // Dekodiranje geografskih koordinata
  14.         $latitude = $exif['GPSLatitude'];
  15.         $longitude = $exif['GPSLongitude'];
  16.  
  17.         // Dekodiranje smjera
  18.         $latitudeRef = $exif['GPSLatitudeRef'];
  19.         $longitudeRef = $exif['GPSLongitudeRef'];
  20.  
  21.         // Pretvaranje geografskih koordinata u decimalni format
  22.         $latitudeDecimal = convertToDecimalDegrees($latitude, $latitudeRef);
  23.         $longitudeDecimal = convertToDecimalDegrees($longitude, $longitudeRef);
  24.  
  25.         // Ispis geografskih koordinata
  26.         //echo "Lokacija: Latitude: $latitudeDecimal, Longitude: $longitudeDecimal";
  27.         }
  28.         else
  29.         {
  30.         echo "Nema dostupnih geografskih koordinata u EXIF podacima slike.";
  31.         }
  32.         } else
  33.         {
  34.         echo "Nevazeca slika ili nedostaje podrska za citanje EXIF podataka.";
  35.         }
  36.  
  37. // Funkcija za pretvaranje geografskih koordinata iz stupnjeva, minuta i sekundi u decimalni format
  38.         function convertToDecimalDegrees($coord, $hemisphere)
  39.         {
  40.                 $degrees = count($coord) > 0 ? $coord[0] : 0;
  41.                 $minutes = count($coord) > 1 ? $coord[1] : 0;
  42.                 $seconds = count($coord) > 2 ? $coord[2] : 0;
  43.                 $degrees= eval("return $degrees;");
  44.                 $minutes = eval("return $minutes;");
  45.                 $seconds = eval("return $seconds;");
  46.  
  47.                 $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1;
  48.                 $decimal = $sign * ($degrees + ($minutes / 60) + ($seconds / 3600));
  49. $string = "2 + 3 * 5"; // String koji sadrzi matemati
  50. ku operaciju
  51.  
  52. $result = eval("return $string;"); // Izvrsavanje matematicke operacije
  53.  
  54. //echo $result; // Ispis rezultata
  55.  
  56.                 return $decimal;
  57.        
  58.         }
  59.  
  60. ?>
  61. <!DOCTYPE html>
  62. <html>
  63. <head>
  64.     <title>Prikaz mape</title>
  65.     <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
  66.     <style>
  67.         #map {
  68.             height: 600px;
  69.             width: 1300px;
  70.         }
  71.     </style>
  72. </head>
  73. <body>
  74.         <form>
  75.         <input type="text"  id="la" value="<?= $latitudeDecimal; ?>"/>
  76.         <input type="text"  id="lo" value="<?= $longitudeDecimal;?>"/>
  77.     <div id="map"></div>
  78.     <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
  79.     </form>
  80. </body>
  81. </html>
  82.  
  83.    
  84.     <script>
  85.  
  86.         // Kreiranje mape
  87.         var la=document.getElementById("la").value;
  88.         var lo=document.getElementById("lo").value;
  89.         var map = L.map('map').setView([la, lo], 10);
  90.  
  91.         // Dodavanje plocica mape
  92.         L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  93.         {
  94.             attribution: '© <a href="https://openstreetmap.org">otvori</a> contributors'
  95.         }).addTo(map);
  96.  
  97.         // Definiranje ikone (slike) za marker
  98.         var myIcon = L.icon
  99.             (
  100.                 {
  101.                 iconUrl: 'slika.jpg',
  102.                 iconSize: [38, 38],
  103.                 iconAnchor: [19, 38],
  104.                 popupAnchor: [0, -38]
  105.                 }
  106.         );
  107.  
  108.         // Dodavanje vase slike na kartu
  109.         var imageMarker = L.marker([la, lo], { icon: myIcon }).addTo(map);
  110.         imageMarker.bindPopup('Moj marker s slikom').openPopup();
  111.  
  112.                 //provjerava koji je taster misa pritisnut i mijenja velicinu slike na osnovu toga
  113.                 imageMarker.on
  114.                 ('mousedown', function()
  115.                     {
  116.                     var mis=event.button;
  117.                         if(mis==0)
  118.                         {
  119.                                 var n=2;       
  120.                                 }
  121.                                 else if(mis==2)
  122.                                 {
  123.                                 var n=0.5;     
  124.                                 }
  125.                                 else
  126.                                 {
  127.                                 var n=1;               
  128.                                 }
  129.                                 var x=myIcon.options.iconSize[0]*n ;
  130.                                 var y=myIcon.options.iconSize[1]*n ;
  131.                                 iconSize = [x, y];
  132.                                 iconAnchor = [30, 60];
  133.                                 popupAnchor = [0, -60];
  134.                                 myIcon.options.iconSize = iconSize;
  135.                                 myIcon.options.iconAnchor = iconAnchor;
  136.                                 myIcon.options.popupAnchor = popupAnchor;
  137.                                 imageMarker.setIcon(myIcon);                           
  138.                                
  139.                                
  140.                     }  
  141.  
  142.                 )
  143.     </script>
  144.        

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
Ovaj post je ureden 5 puta. Posljednja izmjena 29.05.2023 15:21 od strane zxz. ↑  ↓

Stranice (5):1,2,3,4,5


Sva vremena su GMT +01:00. Trenutno vrijeme: 6: 56 pm.