Napisałem skrypt, którego działanie opisałem w komentarzach.
Powinien zamieniać
Cytat
[img=adres]podpis[/img]
na
<div class="divimg" style="width: szerokość_adres px;"> <img src="adres" alt="" />
Oto skrypt.
<?php
//$str to zawartość artykułu.
//Funkcja sprawdzająca, czy plik z zewnętrznego serwera istnieje. Nie mojego autor
stwa.
function remote_file_exists($filename) {
$ch = curl_init($filename);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ($response_code == 200);
}
//Funkcja pobierająca szerokość obrazka
function img_width($imgwidthcheck) {
if (!remote_file_exists($imgwidthcheck)) {
$image = 'http://mojastrona.pl/brak.gif';
}
else { $imagewidth = $imgwidthcheck; }
$szer = $dane[0];
return $szer;
}
//Funkcja sprawdzająca, czy obrazek istnieje. Jeżeli nie, obrazek zostaje zastąpio
ny przez
//http://mojastrona.pl/brak.gif
function obrazek_exists($imgcheck) {
if (!remote_file_exists($imgcheck)) {
$image = 'http://mojastrona.pl/brak.gif';
}
else { $image = $imgcheck; }
return $image;
}
//Funkcja BBCODE
Function bbcode($str){
$naco = <<<EOPHP
'<div class="divimg" style="width: '.img_width('2').'px;">
<div>
<img src="'.obrazek_exists('2').'" alt="" />
</div>
<div>4</div>
</div>'
EOPHP;
$zamien = '#[img=(W?)(.*?)(W?)](.*?)[/img]#e';
//(...)
}
?>
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_obrazkaDziękuję.