Goedendag, Ik ben Pierre en ben 73 jaar en freubel wat aan mijn website.
Nu heb ik een routine die een string omzet naar images.
het probleem is dat hij dit wel gedeeltelijk doet

De routine:

function txt2dig($string)
{
	$letters = array();
    for($i=0; $i < strlen($string); $i++)
	{
		$letters[] = $string[$i];
	}
	$dig = '';	
	foreach ($letters as $key=>$value)
	{
		$dig .= '<img src=images/site/cijfers_klein/'.$value.'.gif>';
	}
return ($dig);
}

De output
img src=images/site/cijfers_klein/.gif><img src=images/site/cijfers_klein/.gif><img src=images/site/cijfers_klein/.gif>104</span>

Hij zet de waardes niet op de plaats wat ze moeten staan. heb al van alles geprobeerd maar krijg het niet voor elkaar.
Is er iemand die mij een hint kan geven waar het fout gaat.

Die site is mij te beweeglijk.
Daar ga ik niet op zoeken.
Pierre, maak anders een klein werkend voorbeeld zonder toeters en bellen..
Ik wil iedereen hartelijk danken voor hun medewerking, het werkt nu.

function txt2dig($string)
{
    $dig = '';
    for($i=0; $i < strlen($string); $i++)
    {
    if (strlen($string) == '1') $string = '000'.$string;
    if (strlen($string) == '2') $string = '00'.$string;	
    if (strlen($string) == '3') $string = '0'.$string;	
    if (strlen($string) == '4') $string = ''.$string;
    $dig .= '<img src="images/site/cijfers_klein/'.$string[$i].'.gif" height="20">';
    }
return ($dig);


De routine is die van SanThe met toevoeging van de lengte bepaling.
Het vreemde is dat als ik de lengte bepaling weg haal het weer niet werkt.

Pierre
Mijn conclusie:
Er wordt niet de juiste waarde aan de functie doorgegeven.
Kijk ook eens naar https://www.php.net/manual/en/function.str-pad.php

<?php $string = str_pad($$string, 4, "0", STR_PAD_LEFT); ?>

Dit plaatst zovaak "0" voor je string tot de lengte 4 is.

In jouw geval: je loopt door de string heen, maar de lengte van de string verandert ondertussen.

Wel interessant om te zien of met de ingangsstring "ab" de lengte van 2 gebruikt wordt voor de for-lus, of dat hij eerst een keer door de lus heen gaat met $i=0 , dan onderweg de string verandert in "00ab" en dan $i < 4 gebruikt.

Dat gaat nu goed (er komen img letters uit) maar wel dingen om op te letten



[size=xsmall]Toevoeging op 30/10/2024 14:09:55:[/size]

<?php
function txt2dig($string)
{
$dig = '';
$string = str_pad($string, 4, '0', STR_PAD_LEFT);
for($i=0; $i < strlen($string); $i++)
{
$dig .= '<img src="images/site/cijfers_klein/'.$string[$i].'.gif" height="20">';
}
return ($dig);
}

echo txt2dig('ab');
?>
Dat werkt goed, bedankt. code ziet er nu zo uit lekker kort.

function txt2dig($string)
{
    $dig = '';
    for($i=0; $i < strlen($string); $i++)
    {   $string = str_pad($string, 4, "L", STR_PAD_LEFT);
        $dig .= '<img src="../images/site/cijfers_klein/'.$string[$i].'.gif" height="22">';
    }
return ($dig);


de L is een lege 0 maar heeft een donkerder kleur voor beter zicht en het lijkt dan meer op een digitale teller.
}
jouw str_pad regel kan voor de for-lus komen: je hoeft hem niet 4x van een prefix te voorzien...
** spam bericht verwijderd **
Ivo P op 30/10/2024 14:29:32

jouw str_pad regel kan voor de for-lus komen: je hoeft hem niet 4x van een prefix te voorzien...


Ja, bedankt had het al veranderd, heb overal de code geschoond en de CSS ook aangepast, is een stuk rustiger nu.

Reageren