/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Beregn variabel størrelse incl. billleder.
Fra : Erik Hansen


Dato : 09-09-01 16:02

Hej.

Jeg har en variabel som indeholder en artikel ($artikel). Jeg vil
gerne have beregnet hvor stor variablen er, men det skal være incl. de
billeder som indgår i artiklen.
Alle billeder som indgår i en artikel er med HTML tag <IMG SRC=""
......>

Er der en funktion i PHP som kan dette automatisk.?

Alternativt har jeg selv tænkt på ført at beregne antal bytes i
variablen med strlen($artikel), og herefter søger artiklen i gennem
med en while og bytes for bytes efter en <IMG, og hver gang den finder
en <IMG så teste på filens størrelse.
Jeg ved ikke om dette er en klumpet måde at gøre det på?, men det er
løsningen jeg har tænkt.

En typisk artikel er på ca. 3 - 10 Kb, men der kan være enkelte på
omkring 30 Kb.

....Erik

 
 
Niels Andersen (09-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 09-09-01 16:09

"Erik Hansen" <ehh@post1.tele.dk> wrote in message
news:7k0nptgoopupsllti2gk5lvt1qr2k5k9vk@4ax.com...
> Alternativt har jeg selv tænkt på ført at beregne antal bytes i
> variablen med strlen($artikel), og herefter søger artiklen i gennem
> med en while og bytes for bytes efter en <IMG, og hver gang den finder
> en <IMG så teste på filens størrelse.

Yep, det er nok den bedste måde.

--
Mvh.

Niels Andersen



Jonas Koch Bentzen (09-09-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-09-01 16:27

Erik Hansen wrote:

> Jeg har en variabel som indeholder en artikel ($artikel). Jeg vil
> gerne have beregnet hvor stor variablen er, men det skal være incl. de
> billeder som indgår i artiklen.
> Alle billeder som indgår i en artikel er med HTML tag <IMG SRC=""
> ......>
>
> Er der en funktion i PHP som kan dette automatisk.?

Drøm videre... : )

> Alternativt har jeg selv tænkt på ført at beregne antal bytes i
> variablen med strlen($artikel), og herefter søger artiklen i gennem
> med en while og bytes for bytes efter en <IMG, og hver gang den finder
> en <IMG så teste på filens størrelse.
> Jeg ved ikke om dette er en klumpet måde at gøre det på?

Du har ret så langt, at du skal ind og finde hvert enkelt img-kode. Dog
synes jeg ikke, det er en god ide at læse artiklen byte for byte. Jeg
ville gøre det vha. en spliti("<img", $artikel) (eller explode("<img",
$artikel), hvis du er sikker på, at "<img" altid bliver skrevet med små
bogstaver). Nu ved du så, at arrayelementerne 1 til sizeof($array)
starter med den sidste del af img-koden (f.eks. " src='billede.png'
height='10' width='10' alt=''/>"), og så kan du let få filnavnet ud.


Jonas Koch Bentzen (09-09-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-09-01 16:36

Jonas Koch Bentzen wrote:

> Jeg
> ville gøre det vha. en spliti("<img", $artikel) (eller
> explode("<img", $artikel), hvis du er sikker på, at "<img" altid
> bliver skrevet med små bogstaver). Nu ved du så, at arrayelementerne
> 1 til sizeof($array)

Rettelse: Arrayelemeterne 1 til sizeof($array) - 1.

> starter med den sidste del af img-koden (f.eks. " src='billede.png'
> height='10' width='10' alt=''/>"), og så kan du let få filnavnet ud.

Her er et lille, uafprøvet eksempel. Jeg går i nedenstående ud fra, at
"img" og "src" altid staves med småt, og at attributværdierne omringes
af apostroffer ("<img src='apostrof.png'/>").

$split = explode("<img", $artikel);
for ($i = 1; $i < sizeof($split); $i++) {
$billedfil = strstr($split[$i], "src=");
$billedfil = substr($billedfil, 5, strpos($billedfil, "'"));

$billedfiler[] = $billedfil;
}


Erik Hansen (09-09-2001)
Kommentar
Fra : Erik Hansen


Dato : 09-09-01 20:06

On Sun, 9 Sep 2001 17:36:01 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Her er et lille, uafprøvet eksempel. Jeg går i nedenstående ud fra, at
>"img" og "src" altid staves med småt, og at attributværdierne omringes
>af apostroffer ("<img src='apostrof.png'/>").

IMG og SRC står altid ens, og er med stort, og jeg bruger altid "
anførselstegn til at omringe en værdi.

Jeg kunne ikke få det helt til at virker, men jeg har rette lidt i det
og nu virker det.

$split = explode("<IMG", $artikel);
for ($ii = 1; $ii < sizeof($split); $ii++) {
$billedfil = strstr($split[$ii], "SRC=");
$billedfil = str_replace('SRC="',"",$billedfil);
$billedfil = substr($billedfil, 0, strpos($billedfil, '"'));
$size = $size + filesize("$billedfil");
}

....Erik

Rasmus K. Brosbøl (09-09-2001)
Kommentar
Fra : Rasmus K. Brosbøl


Dato : 09-09-01 16:58

Erik Hansen wrote:
> Alternativt har jeg selv tænkt på ført at beregne antal bytes i
> variablen med strlen($artikel), og herefter søger artiklen i gennem
> med en while og bytes for bytes efter en <IMG, og hver gang den finder
> en <IMG så teste på filens størrelse.
> Jeg ved ikke om dette er en klumpet måde at gøre det på?, men det er
> løsningen jeg har tænkt.

Det er ret klumpet. At bruge et regular expression er meget nemmere. En
anden fordel er at du nemt kan lave et regexp der matcher flere
udformninger af et img tag.

Et utestet php4 eksempel følger:

preg_match_all("/<\s*img\s+src\s*=\s*\"(.+)\".*>/imsU", $artikel,
$matches, PREG_SET_ORDER);
foreach($matches as $match) {
if (!empty($match[1])) {
echo "Found picture: " . $match[1] . "<BR>";
}
}

Ovenstående regexp antager at src er den første attribut i img tagget.

Mvh.
Rasmus

Jonas Koch Bentzen (09-09-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 09-09-01 17:00

Rasmus K. Brosbøl wrote:

> Erik Hansen wrote:
> > Alternativt har jeg selv tænkt på ført at beregne antal bytes i
> > variablen med strlen($artikel), og herefter søger artiklen i gennem
> > med en while og bytes for bytes efter en <IMG, og hver gang den
> > finder en <IMG så teste på filens størrelse.
> > Jeg ved ikke om dette er en klumpet måde at gøre det på?, men det er
> > løsningen jeg har tænkt.
>
> Det er ret klumpet. At bruge et regular expression er meget nemmere.

...Men også langsommere end den metode, jeg foreslog et andet sted i
tråden. Min erfaring er, at langsomheden ved regular expressions bliver
ret synlig, når man arbejder med store tekstmængder. Det kan næsten
altid betale sig at bruge sådan noget som explode, substr og strpos til
den slags ting, hvis hastigheden er vigtig.


Per Thomsen (09-09-2001)
Kommentar
Fra : Per Thomsen


Dato : 09-09-01 16:56


"Erik Hansen" <ehh@post1.tele.dk> skrev i en meddelelse
news:7k0nptgoopupsllti2gk5lvt1qr2k5k9vk@4ax.com...
> Hej.
>
> Jeg har en variabel som indeholder en artikel ($artikel). Jeg vil
> gerne have beregnet hvor stor variablen er, men det skal være incl. de
> billeder som indgår i artiklen.
> Alle billeder som indgår i en artikel er med HTML tag <IMG SRC=""
> .....>
>
> Er der en funktion i PHP som kan dette automatisk.?

Det tror jeg ikke. Billederne er jo som sådan ikke indeholdt i strengen,
men når strengen outputtes til browseren laver browseren requests for
hvert billede.

>
> Alternativt har jeg selv tænkt på ført at beregne antal bytes i
> variablen med strlen($artikel), og herefter søger artiklen i gennem
> med en while og bytes for bytes efter en <IMG, og hver gang den finder
> en <IMG så teste på filens størrelse.
> Jeg ved ikke om dette er en klumpet måde at gøre det på?, men det er
> løsningen jeg har tænkt.

Hvis der var en funktion i PHP, der gjorde det for dig, ville det helt
sikkert være
noget i den stil den gjorde. Dog er det ikke nødvendigt at gå strengen i
gennem
byte for byte, du burde i stedet tage et kig på eregi() funktionen,
eller evt lave en løsning med
strpos()-funktionen, men det kræver at IMG-tagget altid bliver brugt på
en bestemt måde (f.eks. at SRC attributten altid er den første
definerede attribut.

MVH Per Thomsen,
http://www.pert.dk/

[snip]



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste