Gå til innhold

Bildeurl kommer utenfor src="", hvorfor det?


Anbefalte innlegg

Urk folkens! :)

 

Jeg har et underlig problem jeg ikke helt klarer sette fingeren på. Jeg bruker en phpfunksjon for å hente url til brukeren sitt profilbilde.

 

Min funksjon, litt modifisert, men avføringa er den samme.

 

<?php function profile_image($pid,$type)
{
if($type == 'thumb')
{
echo'http://bildeurl.com';
}
else
{
echo'http://bildeurl.com';
}
}
?>

 

Mens jeg da henter ut bildet med 1 av de 2 som følger avhengig av akkurat hvor jeg er:

 

<img src="<?php profile_image($userid,'thumb'); ?>">
echo'<img src="'.profile_image($userid,'thumb').'">';

 

Saken er at der hvor dette funker, da bruker jeg den øverste av de to, mens når jeg bruker den nederste, da kommer bildeurl'en utenfor <img-taggen>.

 

Resultat med den øverste:

<img src="http://bildeurl.com">

Resultat med den nederste:

http://bildeurl.com<img src="">

 

Er det noe jeg gjør veldig galt her? Jeg er ikke sikker på hva det kan være. Kun grunnleggende phpkunnskaper finner sted i hodet mitt, så det kan være det er bare en liten fillefeil jeg ikke vet om?

 

På forhånd, takk for evt. svar som kan hjelpe meg til en løsning.

Endret av seppolaatle
Lenke til kommentar
Videoannonse
Annonse

Return gir funksjonen en verdi, kan du si (må derfor printes ut manuelt). Echo bare printer ut det du setter i echo.

 

echo:

<?php

function q() {
echo 5;
}

echo (q() == 5) ? 'Funksjonen returnerer 5.' : 'Funksjonen returnerer IKKE 5.';

?>

 

return:

<?php

function q() {
return 5;
}

echo (q() == 5) ? 'Funksjonen returnerer 5.' : 'Funksjonen returnerer IKKE 5.';

?>

  • Liker 1
Lenke til kommentar

Tenk på at du har en funksjon som opererer med tall. Hvis du ønsker å bruke funksjonen videre, uten å skrive ut resultatet så ville det vært dumt å bruke echo i funksjonen. Ved å bruke return så kan du bruke tallet videre i regneoperasjoner og lignende.

 

function sum($a, $b)

{

return ($a + $b);

}

 

echo (2 + sum(3,5));

 

Her vil man da skrive ut tallet 10.

Lenke til kommentar

Skal se om jeg klarer å forklare hvorfor det skjer i eksemplet du gir.

 

<img src="<?php profile_image($userid,'thumb'); ?>">

 

Her blir delen før "<?php" skrevet til browser, så blir php koden kjørt, som bruker "echo" og da sender den stringen direkte til browser. Så blir "> delen skrevet. Resultat, slik du vil ha det.

 

 

echo'<img src="'.profile_image($userid,'thumb').'">';

 

Når du kjører echo her blir resten av linjen evaluert, din funksjon blir kjørt som del av evalueringen, den skriver strengen med url til browser (via echo), og returnerer ingenting.

 

SÅ, etter at det er gjort, blir return verdien (som er ingenting) satt inn der som src="" skal være, og så sendt til browser. Resultat, du får url når funksjon blir kjørt, ikke hvor du har plassert den ;)

 

Tekniske ting:

* Evaluering av echo '<img src="'.profile_image($userid,'thumb').'">'; :

1. Start med streng <img src="

2. Kjør funksjon profile_image($userid,'thumb')

3. Legg til retur-verdi av den funksjonen til slutten av streng fra 1.

4. Ta streng "> og legg til slutten av streng fra 3.

5. Returner det resultatet som èn streng til "echo" kommandoen.

6. Echo kommandoen sender strengen til browseren

 

* Med "sendt til browser" så mener jeg skrevet til minne-buffer som så webserver sender til browser

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...