Avatar billede little_kim86 Nybegynder
29. november 2011 - 15:38 Der er 13 kommentarer og
1 løsning

Find width og lig f.eks 100 til den.

Hej alle jer på eksperten...

Jeg sidder med et lille problem, jeg skal have fundet noget som kan finde bredden på et billede ligge 100 til den brede og erstatte den gamle bredde med den nye...
Og nu ligger landet sådan at jeg ikke rigtig kan hitte ud af de "pattern" man skal bruge når man bruger funktioner så som "preg_match"...

Er der nogle der kan hjælpe mig, og evt ud fra den linje her under?

<img style="width: 120px; border: none;" src="billede.jpg" alt="billede" />
Avatar billede danco Nybegynder
29. november 2011 - 15:54 #1
Hvad du har postet her er HTML og har INTET med php at gøre. Så umiddelbart er det noget javascript du skal bruge.
Du kan også gøre i PHP , men det er mere hvis du roder med GD lib. for at kunne bruge fx:
picture.php?picture=14

Nedenstående er en javascript funktion jeg lige hurtigt smækkede sammen til dig der burde gøre jobbet.
   

function lol(id){
        width = Number(document.getElementById(id).getAttribute("width")) ;   
        newWidth = width+100;
        alert("new width of: "+id+" = "+newWidth);
        return newWidth;
    }
Derudover bør du måske overveje at bruge den width attribut på IMG tagget frem for at pakke det ind i Style attributten. Det tager mit ovenstående eksempel ihvertfald udgangspunkt i .
Avatar billede little_kim86 Nybegynder
29. november 2011 - 16:25 #2
Har vist ikke uddybet mit nok...

Jeg får noget tekst ud af min database og blandt alt den tekst kan der være et billede som dette "<img style="width: 120px; border: none;" src="billede.jpg" alt="billede" />" dog ved jeg aldrig hvad "width" er, så derfor skal jeg bruge noget der kan søge igennem alt teksten og hvis den så finder noget der matcher "width: ???px" så skal den ligge 100 til "???" og erstatte "???" med det nye resultat...

Det skal være i en style for at det er gyldigt xhtml...
Avatar billede little_kim86 Nybegynder
29. november 2011 - 16:26 #3
Ups ikke meningen at det skulle været postet som et svar...
Avatar billede olebole Juniormester
29. november 2011 - 16:45 #4
<ole>

Hvis du hiver et IMG tag ud af din database, så er problemet, hvad du hælder i den. Databaser er til data, og gemmer man data iblandet markup kode, er det skoleopskriften på problemer

/mvh
</bole>
Avatar billede little_kim86 Nybegynder
29. november 2011 - 17:30 #5
Hiver selvfølgelig ikke kun et IMG tag ud. Men det der ligger i databasen er noget som folk har skrevet ind i et tekst felt og som så skal vises. I den forbindelse har jeg så brug for at kunne vise billedet 100px breddere end det bruger har opgivet i tekst feltet...

Er der nogle der kan hjælpe med det?
Avatar billede olebole Juniormester
29. november 2011 - 18:06 #6
"Hiver selvfølgelig ikke kun et IMG tag ud. Men det der ligger i databasen er noget som folk har skrevet ind i et tekst felt og som så skal vises." >> Jamen, det er jo lige netop problemet  =)

Markup kode skal ikke i databasen - uanset, hvordan den havner der. I stedet skal URL'en gemmes i et felt for sig selv. Kan du ikke undgå det i din applikation, har den en uhensigtsmæssig struktur, som du alvorligt bør overveje at ændre. Ellers vil du blive ved med at få problemer af alle mulige slags.

Hvad angår udskiftning af strengstumpen kan det gøres sådan:


function foo($bar) {
    return 'width:'.($bar[1]+100).'px';
}
$s = '<img style="width:120px">';
$s = preg_replace_callback('/width:(\d+)px/', 'foo', $s);
var_dump($s);


- men det er som sagt en rigtig skidt idé.
Avatar billede moddi100 Seniormester
29. november 2011 - 18:21 #7
Af ren og skær interesse, hvordan vil olebole så bære sig ad med f.eks. at have et cms-system? I langt de fleste tilfælde gemmes markup jo netop i en database.
Avatar billede olebole Juniormester
29. november 2011 - 19:14 #8
Det er ikke noget problem. Jeg bruger et, der naturligvis kun gemmer helt simpel markup (bold, italic) i databasen. Billeder og andet markup bør ikke gemmes i databasen, hvis man på sigt vil undgå besværligheder.

Hvad vil du f.eks. gøre, når du ønsker at skifte til et andet layout/design - og har halvdelen af markup koden liggende i databasen? Eller når du skal syndikere dit indhold (f.eks. via RSS), vil du jo også have problemer med først at skulle filtrere for ubrugelig markup.

Jeg ved godt, at rigtig mange af de CMS'er, der kan downloades gratis, ikke lever op til disse - eller andre professionelle krav - men sådan er det jo. Køber man for 4,50kr oksekød, så får man en 'bøf', der er 4,50kr værd  =)
Avatar billede olebole Juniormester
29. november 2011 - 19:23 #9
I et seriøst CMS bliver der holdt styr på f.eks. billeder og links. Hvis du sletter et billede på én side, skulle CMS'et jo gerne kunne advare dig om, at billedet er i brug på andre sider - og anvise hvilke.

Det gælder ikke kun for billeder, men også andre mediefiler og links. Mange sites linker til samme eksterne side fra mange sider, så når man retter et link (til en ekstern side, der er flyttet/nedlagt) på én side, bør man blive advaret om, at linket også bør rettes på resten af siderne.

I et ordentligt CMS har man således i forvejen informationer liggende separat. Derfor er der er ingen grund til også at have dem rodet sammen med tekstuel informationsdata ... tværtimod!  =)
Avatar billede little_kim86 Nybegynder
29. november 2011 - 19:39 #10
Mange tak olebole, vil du ligge et svar?
Avatar billede olebole Juniormester
29. november 2011 - 19:44 #11
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes. Men prøv at tænke over, om ikke du kan finde en bedre struktur  =)
Avatar billede moddi100 Seniormester
29. november 2011 - 19:55 #12
Takker også for dit syn på strukturen, og vil indrømme, at det er sjældent jeg har set en sådan funktionalitet :)
Avatar billede little_kim86 Nybegynder
29. november 2011 - 20:00 #13
I orden, men mange tak for hjælpen..
Avatar billede olebole Juniormester
29. november 2011 - 20:12 #14
Du er velkommen  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester