|
| 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]
| |
|
|