<?php
foreach (glob("*.jpg") as $filename) {
?>
<div><img src="<?= $filename;?>" alt="" /><br /><p
style='text-align:center'><?=$filename?></p></div>
<?php
echo "\r\n";
}
?>
Scriptet fungerer for s� vidt up�klageligt, men jeg har f�et den ide at
inds�tte en r�kke sm� tekstfiler med samme filnavn som billederne. form�let
var at kunne vise en tekst under billedet i stedet for blot filnavnet p�
billedet. Jeg fors�gte dette:
<?php
foreach (glob("*.jpg") as $filename.jpg) {
?>
<div><img src="<?= $filename.jpg;?>" alt="" /><br /><p
style='text-align:center'><?=$filename.txt?></p></div>
<?php
echo "\r\n";
}
?>
... men scriptet brokker sig over forekomsten af et punktum i variablen i
f�rste linje. Det nytter heller ikke at escape punktummet - s� er der bare
brok over det i stedet.
Hvordan f�r jeg parret .jpg-filnavnene med de tilsvarende .txt-filnavne, s�
jeg bare kan smide et nyt billede med tilh�rende tekstfil i mappen og
automatisk f� vist det p� siden?
--
Med venlig hilsen
Erik Ginnerskov
http://ginnerskov.dk - http://html-faq.dk
...
> Hvordan får jeg parret .jpg-filnavnene med de tilsvarende
> .txt-filnavne, så jeg bare kan smide et nyt billede med tilhørende
> tekstfil i mappen og automatisk få vist det på siden?
Noget preg_replace() måske?
$txtname = preg_replace("\.jpg", "\.txt", $filename);
Utestet, så jeg forbeholder mig ret til at have kaget rundt i
rækkefølgen i kaldet.
--
/Wegge
Leder efter redundant peering af dk.*,linux.debian.*
>> Hvordan f�r jeg parret .jpg-filnavnene med de tilsvarende
>> .txt-filnavne, s� jeg bare kan smide et nyt billede med tilh�rende
>> tekstfil i mappen og automatisk f� vist det p� siden?
>
> Noget preg_replace() m�ske?
>
> $txtname = preg_replace("\.jpg", "\.txt", $filename);
>
> Utestet, s� jeg forbeholder mig ret til at have kaget rundt i
> r�kkef�lgen i kaldet.
Jeg pr�vede f�rst at s�tte den linje �verst i scriptet, det giver f�lgende
fejl
Notice: Undefined variable: filename
Warning: Delimiter must not be alphanumeric or backslash
...med henvisning til den indsatte kode linje. Flyttede s� linjen en linje
ned i scriptet og opn�r derved, at Notice-linjen forsvinder. Til geng�ld
udskrives Warning-linjen nu for hvert billede.
Det skal siges, at jeg selvf�lgelig har �ndret variabelnavnet sidst i
scriptet, s� det passer med $txtname.
> Anders Wegge Keller wrote:
>
>>> Hvordan får jeg parret .jpg-filnavnene med de tilsvarende
>>> .txt-filnavne, så jeg bare kan smide et nyt billede med tilhørende
>>> tekstfil i mappen og automatisk få vist det på siden?
>>
>> Noget preg_replace() måske?
>>
>> $txtname = preg_replace("\.jpg", "\.txt", $filename);
>>
>> Utestet, så jeg forbeholder mig ret til at have kaget rundt i
>> rækkefølgen i kaldet.
>
> Jeg prøvede først at sætte den linje øverst i scriptet, det giver følgende
> fejl
>
> Notice: Undefined variable: filename
> Warning: Delimiter must not be alphanumeric or backslash
>
> ...med henvisning til den indsatte kode linje. Flyttede så linjen en linje
> ned i scriptet og opnår derved, at Notice-linjen forsvinder. Til gengæld
> udskrives Warning-linjen nu for hvert billede.
Der skal / udenom den streng der skal erstattes, og derudover skal
"." i replacement ikke escapes. For at undgå flere fejlskud lavede jeg
en lynhurtig test:
$filename = "foo.jpg";
$txtname = preg_replace("/\.jpg/", ".txt", $filename);
echo $txtname;
Den giver det forventede resultat: foo.txt
> <?php
> foreach (glob("*.jpg") as $filename) {
> ?>
> <div><img src="<?= $filename;?>" alt="" /><br /><p
> style='text-align:center'><?=$filename?></p></div>
> <?php
> echo "\r\n";
> }
> ?>
Jeg ville skrive det samme s�dan her:
<?php
foreach (glob("*.jpg") as $filename)
echo "<div><img src='$filename' alt="" />
<p style='text-align:center'>$filename</p></div>
";
?>
> Scriptet fungerer for s� vidt up�klageligt, men jeg har f�et den ide at
> inds�tte en r�kke sm� tekstfiler med samme filnavn som billederne. form�let
> var at kunne vise en tekst under billedet i stedet for blot filnavnet p�
> billedet. Jeg fors�gte dette:
> <?php
> foreach (glob("*.jpg") as $filename.jpg)
Det er helt forkert syntaks. Pr�v dette:
<?php
foreach (glob("*.jpg") as $filename) {
$textname=str_replace('.jpg','.txt',$filename);
echo "<div><img src='$filename' alt="" />
<p style='text-align:center'>$textname</p></div>
";
}
?>
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
> Der skal / udenom den streng der skal erstattes, og derudover skal
> "." i replacement ikke escapes. For at undg� flere fejlskud lavede jeg
> en lynhurtig test:
>
> $filename = "foo.jpg";
> $txtname = preg_replace("/\.jpg/", ".txt", $filename);
> echo $txtname;
>
> Den giver det forventede resultat: foo.txt
OK, nu ser scriptet s�dan ud:
<?php
foreach (glob("*.jpg") as $filename) {
$txtname = preg_replace("/\.jpg/", ".txt", $filename);
?>
<div><img src="<?= $filename;?>" alt="" /><br /><p
style='text-align:center'><?php echo $txtname?></p></div>
<?php
echo "\r\n";
}
?>
Resultatet er, at der under hvert billede bliver udskrevet navnet p� den
tilsvarende tekstfil - ikke indholdet af den. Det var det sidste, jeg gerne
ville opn�.
> $txtname = preg_replace("/\.jpg/", ".txt", $filename);
Preg_replace() er tidskr�vende og un�dvendig i det her tilf�lde.
Du skal vel ogsᅵ enten lᅵse txt-filen ind, eller include den, i stedet
for blot at give den et navn?
Hvis billedet hedder billede.jpg, kan du sᅵ bare kalde txt-filen
billede.jpg.txt
Endelig bᅵr du vel teste for eksistensen af txt-filen, inden du
udskriver den?
<?php
foreach (glob("*.jpg") as $filename.jpg) {
?>
<div><img src="<?= $filename.jpg;?>" alt="" /><br />
<?php
if ( isfile( $filename.".txt")) {
echo "<p style='text-align:center'>";
include $filename.".txt";
echo "</p></div>\r\n";
}
}
?>
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
> Du skal vel ogs� enten l�se txt-filen ind, eller include den, i stedet
> for blot at give den et navn?
> Hvis billedet hedder billede.jpg, kan du s� bare kalde txt-filen
> billede.jpg.txt
Har jeg s� pr�vet:
<?php
foreach (glob("*.jpg") as $filename) {
?>
<div><img src="<?= $filename;?>" alt="" /><br /><p
style='text-align:center'><?php include $filename.".txt"; ?></p></div>
<?php
echo "\r\n";
}
?>
S� funker det. Tak til Anders, Bertel og Birger.
Man kan ikke have variabler med . i PHP
foreach (glob("*.jpg") as $filename) {
// $filename indeholder nu fx. "billede.jpg"
> ?>
> <div><img src="<?= $filename.jpg;?>" alt="" /><br /><p
�ndres til
<?= $filename;?>
> style='text-align:center'><?=$filename.txt?></p></div>
Hvis dine tekstfiler hedder
billede.jpg.txt s� skal du �ndre
... <?=$filename;?>.txt</p> ...
Hvis tekstfilerne hedder
billede.txt
S� kan du skrive
<?=implode('.', array_pop(explode('.', $filename)));?>.txt
// Lidt nemmere at l�se
// Tager alle punktummer og splitter p� dem
$filearray = explode('.', $filename);
// Fjerner den sidste array value, hvilket vil v�re extensionen
array_pop($filearray);
// Samler hele dynen igen
$filename = implode('.', $filearray);