Obrázek v článku – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Obrázek v článku – PHP – Fórum – Programujte.comObrázek v článku – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
ench0
Stálý člen
16. 9. 2007   #1
-
0
-

Zdravím, řeším takový problém. Mám článek a v něm jsou obrázky. Chtěl bych udělat na úvodní stránku výpis dejme tomu 5 článků. A u každého bych chtěl aby se zobrazoval zmenšený obrázek co v tom článku je....(pokud tam někde bude).

Jde mi o to, jestli nevíte nějaký elegantní způsob jak v tom textu najít tag img a vycucnout z něj informace (src, width, height, alt). Abych jej mohl vložit do náhledu článku na té úvodní straně.

Díky moc

Nahlásit jako SPAM
IP: ...–
I programování je pudová záležitost. Buď to pude, nebo to nepude
Reklama
Reklama
insider0
Věrný člen
16. 9. 2007   #2
-
0
-

zdravim :)
elegantni reseni budou regularni vyrazy, moc je neovladam, ale z hlavy zkusim napsat

$regVyraz = "/\<img src=\"([^\"]+)\" width=\"([^\"]+)\" height=\"([^\"]+)\"  alt=\"([^\"]+)\"\>/";

nevim, jestli se < a > musi escapovat ...
pak uz by melo stacit pouziv http://cz.php.net/manual/cs/function.preg-match.php a melo by ti to vratit potrebne udaje
jinak jeste drobnost: atributy obrazku musi byt napsany v tomto poradi, pokud je mas jinak, tak si uprav reg vyraz ...

Nahlásit jako SPAM
IP: ...–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
ench0
Stálý člen
17. 9. 2007   #3
-
0
-

Strašně moc díky. Trošku jsem tvůj regulární výraz rozkouskoval, aby nemusely být obrázky ukládány tak striktně...
Taky jsem použil "líný" kvantifikátor, což mi pomohlo k tomu, že si najdu jen první obrázek v textu...

O výsledný zdroják se s vámi rád podělím.




preg_match("/\<img.*?\/>/", $text, $matches, PREG_OFFSET_CAPTURE);
$img = $matches[0][0];

preg_match("/width=\"([^\"]+)\"/", $img, $matches, PREG_OFFSET_CAPTURE);
$width = $matches[1][0];

preg_match("/height=\"([^\"]+)\"/", $img, $matches, PREG_OFFSET_CAPTURE);
$height = $matches[1][0];

preg_match("/src=\"([^\"]+)\"/", $img, $matches, PREG_OFFSET_CAPTURE);
$src = $matches[0][0];

preg_match("/alt=\"([^\"]+)\"/", $img, $matches, PREG_OFFSET_CAPTURE);
$alt = $matches[0][0];


$max = 100;
if($max < $width || $max < $height){
if($width > $height){
$pomer = $max / $width;
$new_width = $max;
$new_height = $height * $pomer;
} else{
$pomer = $max / $height;
$new_height = $max;
$new_width = $width * $pomer;
}
}else{
$new_width = $width;
$new_height = $height;
}


echo "<img {$src} {$alt} width=\"{$new_width}\" height=\"{$new_height}\" />";

Nahlásit jako SPAM
IP: ...–
I programování je pudová záležitost. Buď to pude, nebo to nepude
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Podobná vlákna

Obrázek — založil honzik242

Obrázek — založil KongliP

Obrázek — založil Driver

Obrázek — založil šachy

Obrázek na střed — založil Kashttan

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý