Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hvad betyder udråbstegn foran is_file?

6 views
Skip to first unread message

Kurt Hansen

unread,
Mar 18, 2013, 9:14:02 AM3/18/13
to
Google ignorerer konsekvent udr�bstegnet, n�r jeg s�ger efter "!is_file".

Jeg har en fornemmelse af, at det betyder NOT ud fra f�lgende kodestump:

// if no file exists display the 'no image' file
if (!is_file($src)) {
$src = "mediafiles/images/no_image.png";
}

Ud fra kommentarlinjen, er det det eneste der giver mening for l�gmand.
I beskrivelsen af "is_file" i php-manua�en kan jeg heller ikke finde
udr�bstegnet dokumenteret.

Jeg skal have placeret to linjer kode i en osCommerce webshop, s�
produktbilleder kan indl�ses fra en ekstern placering (hvilket man ikke
kan som standard i version 2.2x), f.eks. en hjemmeside eller bare et
lager p� et andet dom�ne.

if (substr_count ($src, "http://")) {
$src = stristr ($src, "http://");
}

De f�rste linjer til funktionen l�d tidligere s�ledes:

function tep_image($src, $alt = '', $width = '', $height = '',
$parameters = '') {
if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED ==
'false') ) {
return false;
}

Linje 2 o3 ser noget anderledes ud i dag og nu kan jeg ikke gennemskue
hvor de skal fedtes ind (undskyld l�ngden, men jeg ved jo ikke hvad der
er irrelevant):

// The HTML image wrapper function

// "On the Fly" Auto Thumbnailer using GD Library, servercaching and
browsercaching
// Scales product images dynamically, resulting in smaller file sizes,
and keeps
// proper image ratio. Used in conjunction with product_thumb.php t/n
generator.
function tep_image($src, $alt = '', $width = '', $height = '', $params =
'') {

// if no file exists display the 'no image' file
if (!is_file($src)) {
$src = "mediafiles/images/no_image.png";
}
// Set default image variable and code
$image = '<img src="' . $src . '"';

// Don't calculate if the image is set to a "%" width
if (strstr($width,'%') == false || strstr($height,'%') == false) {
$dont_calculate = 0;
} else {
$dont_calculate = 1;
}

// Dont calculate if a pixel image is being passed (hope you dont
have pixels for sale)
if (!strstr($image, 'pixel')) {
$dont_calculate = 0;
} else {
$dont_calculate = 1;
}

// Do we calculate the image size?
if (CONFIG_CALCULATE_IMAGE_SIZE && !$dont_calculate) {

// Get the image's information
if ($image_size = @getimagesize($src)) {

$ratio = $image_size[1] / $image_size[0];

// Set the width and height to the proper ratio
if (!$width && $height) {
$ratio = $height / $image_size[1];
$width = intval($image_size[0] * $ratio);
} elseif ($width && !$height) {
$ratio = $width / $image_size[0];
$height = intval($image_size[1] * $ratio);
} elseif (!$width && !$height) {
$width = $image_size[0];
$height = $image_size[1];
}

// Scale the image if not the original size
if ($image_size[0] != $width || $image_size[1] != $height) {
$rx = $image_size[0] / $width;
$ry = $image_size[1] / $height;

if ($rx < $ry) {
$width = intval($height / $ratio);
} else {
$height = intval($width * $ratio);
}

$image = '<img src="product_thumb.php?img=' . $src .
'&amp;w=' .
tep_output_string($width) . '&amp;h=' .
tep_output_string($height) . '"';
}

} elseif (IMAGE_REQUIRED == 'false') {
return '';
}
}

// Add remaining image parameters if they exist
if ($width) {
$image .= ' width="' . tep_output_string($width) . '"';
}

if ($height) {
$image .= ' height="' . tep_output_string($height) . '"';
}

if (tep_not_null($params)) $image .= ' ' . $params;

$image .= ' border="0" alt="' . tep_output_string($alt) . '"';

if (tep_not_null($alt)) {
$image .= ' title="' . tep_output_string($alt) . '"';
}

$image .= '>';

return $image;
}

--
Venlig hilsen
Kurt Hansen

Asger Joergensen

unread,
Mar 18, 2013, 10:39:54 AM3/18/13
to
Hej Kurt

Kurt Hansen skrev:

> Google ignorerer konsekvent udråbstegnet, når jeg søger efter "!is_file".
>
> Jeg har en fornemmelse af, at det betyder NOT ud fra følgende kodestump:

Det har du fuldstændigt ret i ! betyder NOT i den sammenhæng.

Venlig hilsen
Asger-P

http://asger-p.dk/software/qlaunchtools2.php
Ny version af QLaunch nu med Images To Icon og Icon To Png

Kurt Hansen

unread,
Mar 18, 2013, 11:13:59 AM3/18/13
to
Den 18/03/13 15.39, Asger Joergensen skrev:
> Hej Kurt
>
> Kurt Hansen skrev:
>
>> Google ignorerer konsekvent udr�bstegnet, n�r jeg s�ger efter "!is_file".
>>
>> Jeg har en fornemmelse af, at det betyder NOT ud fra f�lgende kodestump:
>
> Det har du fuldst�ndigt ret i ! betyder NOT i den sammenh�ng.
>
> Venlig hilsen
> Asger-P
>
> http://asger-p.dk/software/qlaunchtools2.php
> Ny version af QLaunch nu med Images To Icon og Icon To Png

Tak, Asger, det bestyrker mig i den vildfarelse, at jeg har t�ft for det
der med php og jeg er da osse i f�rd med at tr�kke benene op under mig
til at kraftigt afs�t. NU skal det v�re :-)

Har du et bud p� HVOR jeg skal fedte de to linjer ind i den function? S�
klog er jeg nemlig ikke blevet, at jeg kan regne den ud. Jeg har
fedtmulet, men er ikke lykkedes med forskellige placeringer.

Karl Erik Christensen

unread,
Mar 18, 2013, 11:35:34 AM3/18/13
to
Den 18-03-2013 14:14, Kurt Hansen skrev:
> if (!is_file($src)) {
> $src = "mediafiles/images/no_image.png";
> }

$src er navnet p� billedfilen.

Det hj�lper somme tider at "fordanske" php-udtryk:

hvis (ikke_findes(filnavn)) s� {
er filnavnet = "mediafiles/images/no_image.png";
}

Det efterf�lges som regel af:
ellers hurra filnavnet findes, s� {
g�r en hel masse med filen;
..........;
}

Karl Erik.

--
http://dmwebdesign.dk/karlerik/

Kurt Hansen

unread,
Mar 18, 2013, 12:16:57 PM3/18/13
to
Den 18/03/13 16.35, Karl Erik Christensen skrev:
> Den 18-03-2013 14:14, Kurt Hansen skrev:
>> if (!is_file($src)) {
>> $src = "mediafiles/images/no_image.png";
>> }
>
> $src er navnet p� billedfilen.
>
> Det hj�lper somme tider at "fordanske" php-udtryk:
>
> hvis (ikke_findes(filnavn)) s� {
> er filnavnet = "mediafiles/images/no_image.png";
> }
Yes, den har jeg regnet ud og det virker da ogs� s�dan i praksis. Jeg
har teste det ved b�de at slette en fil og at omd�be. Findes filen ikke,
viser den blot dummy'en.

> Det efterf�lges som regel af:
> ellers hurra filnavnet findes, s� {
> g�r en hel masse med filen;
> ..........;
> }

Ogs� her kan jeg f�lge tankegangen. Det �ndrer blot ikke ved det
beklagelige faktum, at jeg ikke kan analysere mig frem til, hvor de to
skide linjer skal s�ttes ind.

Martin

unread,
Mar 18, 2013, 1:12:32 PM3/18/13
to
On 18-03-2013 14:14, Kurt Hansen wrote:
> I beskrivelsen af "is_file" i php-manua�en kan jeg heller ikke finde
> udr�bstegnet dokumenteret.

Du skal bare kigge det rigtige sted :)
http://www.php.net/manual/en/language.operators.logical.php
nr 4 operator er ! $a :)

For at komme dertil, s� g�r vi s�ledes i manualen
Vi starter her, som vi altid g�r hvis ikke ved hvad vi skal kigge efter
http://www.php.net/manual/en/
og da alt inde i en if, elseif osv. er operators (det kunne v�re +-*/()&
AND OR eller en masse andet), s� vi kigger efter operators
s� kommer vi til
http://www.php.net/manual/en/language.operators.php

Da operatoren er inde i en if/elseif ja, s� er det en logical operator,
s� ender vi p�
http://www.php.net/manual/en/language.operators.logical.php

Eller hvis vi ikke lige ved hvad det er, s� kunne vi have taget
"Operator Precedence" og kommet til
http://www.php.net/manual/en/language.operators.precedence.php

S� kigger vi listen igennem, og finder ! som nummer 4 p� listen, og der
st�r det er en logical - ja, s� kommer vi til
http://www.php.net/manual/en/language.operators.logical.php
igen.

Karl Erik Christensen

unread,
Mar 18, 2013, 1:13:23 PM3/18/13
to
Den 18-03-2013 14:14, Kurt Hansen skrev:
> if (substr_count ($src, "http://")) {
> $src = stristr ($src, "http://");
> }

Udtrykket:
$src = "mediafiles/images/no_image.png";

angiver den relative sti til filen - dvs du befinder dig p� den url hvor
filen findes.

Hvis filen ligger p� en anden server, skal stien laves om.

Det kan g�res p� flere m�der.
Du kan s�tte dom�net i en variabel:

$dom ="http://dom�ne.tld/";

Filen kan s� findes med:

$src = ($dom . $src);

Hvilket giver stien (kontroller lige syntaksen):

http://dom�ne.tld/mediafiles/images/no_image.png

Kurt Hansen

unread,
Mar 19, 2013, 10:08:05 AM3/19/13
to
Den 18/03/13 18.13, Karl Erik Christensen skrev:
Tak for fors�get p� et hj�lpe - i formen: Hj�lp til selvhj�lp.

Nu har jeg imidlertid bruget et par timer p� at fedte med det du skriver
og jeg m� nok indr�mme, at jeg ikke fatter en hylende hattefis af det.

P� et tidspunkt fik jeg vist en placeholder for det fantombillede jeg
fors�gte at hente derude (tror jeg da nok) og ud fra det fors�gte jeg
forskellige varianter, men intet af det lukkedes og nu har jeg fucket
kodet s� meget op, at jeg ikke kan rekonstruere det.

Hvor vil du helt pr�cist indsatte hvad i f�lgende, som er toppen af den
omhandlede function:

// The HTML image wrapper function
//
function tep_image($src, $alt = '', $width = '', $height = '', $params =
'') {

// if no file exists display the 'no image' file
if (!is_file($src)) {
$src = "mediafiles/images/no_image.png";
}
// Set default image variable and code
$image = '<img src="' . $src . '"';

Karl Erik Christensen

unread,
Mar 19, 2013, 11:32:03 AM3/19/13
to
Skal vi ikke lige genopfriske dit problem?

Hvad er det du vil?
Skal du have indsat billeder som ligger p� et andet dom�ne?

Funktionen udf�rer jo meget andet ogs� - den laver bl.a. thumbnails af
de billeder den finder.

S� for god ordens skyld - hvad vil du opn�?

Karl Erik Christensen

unread,
Mar 20, 2013, 5:49:54 AM3/20/13
to
Den 19-03-2013 15:08, Kurt Hansen skrev:
> Hvor vil du helt pr�cist indsatte hvad i f�lgende, som er toppen af den
> omhandlede function:
>
> // The HTML image wrapper function
> //
> function tep_image($src, $alt = '', $width = '', $height = '', $params =
> '') {
>
> // if no file exists display the 'no image' file
> if (!is_file($src)) {
> $src = "mediafiles/images/no_image.png";
> }

Jeg vil _ikke_ inds�tte noget kode i funktionen - blot tilpasse stien
til billederne.

Du bliver n�dt til at forst� funktionens virkem�de:

Funktion kaldes et sted i programmet med f.eks.:
$image = tep_image($src,alt_tekst,image_width,image_height,parametre);

Her vil du s� �ndre p� $src, som et eller andet sted er defineret til at
v�re document_root - dvs. dokumentets placering.

Som det er nu, angives placeringen af billederne i forhold til
document_root.

Hvis du vil �ndre stien til billederne, skal du alts� pille ved $src.

Du skal finde det sted hvor $src er defineret til document_root, og
�ndre til:
$src = "http://kurts_hjemmeside.dk/mediafiles/images/";
(eller hvad der nu passer til den aktuelle placering af billederne).

I funktionen ville jeg s� �ndre:
$src = "mediafiles/images/no_image.png";
til:
$src = $src . "no_image.png";

Martin

unread,
Mar 20, 2013, 9:21:05 AM3/20/13
to
On 19-03-2013 15:08, Kurt Hansen wrote:
> Den 18/03/13 18.13, Karl Erik Christensen skrev:
>> Den 18-03-2013 14:14, Kurt Hansen skrev:
>>> if (substr_count ($src, "http://")) {
>>> $src = stristr ($src, "http://");
>>> }
>>
>> Udtrykket:
>> $src = "mediafiles/images/no_image.png";
>>
>> angiver den relative sti til filen - dvs du befinder dig på den url hvor
>> filen findes.
>>
>> Hvis filen ligger på en anden server, skal stien laves om.
>>
>> Det kan gøres på flere måder.
>> Du kan sætte domænet i en variabel:
>>
>> $dom ="http://domæne.tld/";
>>
>> Filen kan så findes med:
>>
>> $src = ($dom . $src);
>>
>> Hvilket giver stien (kontroller lige syntaksen):
>>
>> http://domæne.tld/mediafiles/images/no_image.png
>
> Tak for forsøget på et hjælpe - i formen: Hjælp til selvhjælp.
>
> Nu har jeg imidlertid bruget et par timer på at fedte med det du skriver
> og jeg må nok indrømme, at jeg ikke fatter en hylende hattefis af det.
>
> På et tidspunkt fik jeg vist en placeholder for det fantombillede jeg
> forsøgte at hente derude (tror jeg da nok) og ud fra det forsøgte jeg
> forskellige varianter, men intet af det lukkedes og nu har jeg fucket
> kodet så meget op, at jeg ikke kan rekonstruere det.
>
> Hvor vil du helt præcist indsatte hvad i følgende, som er toppen af den
> omhandlede function:
>
> // The HTML image wrapper function
> //
> function tep_image($src, $alt = '', $width = '', $height = '', $params =
> '') {
>
> // if no file exists display the 'no image' file
> if (!is_file($src)) {
> $src = "mediafiles/images/no_image.png";
> }
> // Set default image variable and code
> $image = '<img src="' . $src . '"';

Husk at is_file - skal bruge SERVER STIEN, og IKKE web url'en.

Eksempel - url stien er
http://domæne.com/images/billede
Hvis du prøver at køre

if (is_file('http://domæne.com/images/billede'))

Så vil du ALTID få false retur fra den funktion, da den skal bruge
server stien.

Hvis du ved hvor billederne ligger i forhold til filen du arbejder i, så
kan du bruge

__DIR__ . '/../../mediafiles/ - for at få server stien
0 new messages