Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Ramka wokół obrazka z podpisem. Ciężki skrypt., Jak na wikipedii i innych wiki.
igors
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Napisałem skrypt, którego działanie opisałem w komentarzach.
Powinien zamieniać
Cytat
[img=adres]podpis[/img]


na

  1. <div class="divimg" style="width: szerokość_adres px;">
  2. <div>
  3. <img src="adres" alt="" />
  4. </div>
  5. <div>podpis</div>
  6. </div>


Oto skrypt.

  1. <?php
  2. //$str to zawartość artykułu.
  3.  
  4. //Funkcja sprawdzająca, czy plik z zewnętrznego serwera istnieje. Nie mojego autor
    stwa.
  5.  
  6. function remote_file_exists($filename) {
  7. $ch = curl_init($filename);
  8. curl_setopt($ch, CURLOPT_NOBODY, true);
  9. curl_exec($ch);
  10. $response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  11. curl_close($ch);
  12. return ($response_code == 200);
  13. }
  14.  
  15. //Funkcja pobierająca szerokość obrazka
  16.  
  17. function img_width($imgwidthcheck) {
  18. if (!remote_file_exists($imgwidthcheck)) {
  19. $image = 'http://mojastrona.pl/brak.gif';
  20. }
  21. else { $imagewidth = $imgwidthcheck; }
  22. $dane = getimagesize($imagewidth);
  23. $szer = $dane[0];
  24. return $szer;
  25. }
  26.  
  27. //Funkcja sprawdzająca, czy obrazek istnieje. Jeżeli nie, obrazek zostaje zastąpio
    ny przez
  28. //http://mojastrona.pl/brak.gif
  29.  
  30. function obrazek_exists($imgcheck) {
  31. if (!remote_file_exists($imgcheck)) {
  32. $image = 'http://mojastrona.pl/brak.gif';
  33. }
  34. else { $image = $imgcheck; }
  35. return $image;
  36. }
  37.  
  38. //Funkcja BBCODE
  39.  
  40. Function bbcode($str){
  41.  
  42. $naco = <<<EOPHP
  43. '<div class="divimg" style="width: '.img_width('2').'px;">
  44. <div>
  45. <img src="'.obrazek_exists('2').'" alt="" />
  46. </div>
  47. <div>4</div>
  48. </div>'
  49. EOPHP;
  50.  
  51. $zamien = '#[img=(W?)(.*?)(W?)](.*?)[/img]#e';
  52.  
  53. $str = preg_replace($zamien, $naco, $str);
  54.  
  55. //(...)
  56.  
  57. }
  58. ?>


Działa strasznie wolno. Nie sprawdzałem, jaki jest czas wykonania skryptu, ale kiedy przechodzę na stronę z użytym [img=adres]podpis[/img], to strona ładuje się dużo wolniej, a czasami wywala błąd:
Cytat
MySQL server has gone away
i zawartość strony po błędzie nie ładuje się.

Czy pomógłby mi ktoś odchudzić ten skrypt?
A może wiecie, jak zostało to rozwiązane na wikipedii? (wiem, na wikipedii skrypt ten jest bardziej rozbudowany i funkcjonalny)
http://wiesz.squarezone.pl/WIESZ:Uwagi_o_w...3.C5.82_obrazka

Dziękuję.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:40