Str_replace zet er 1 bij?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas Php

Bas Php

31/08/2010 23:45:15
Quote Anchor link
Hallo iedereen,

ik ben bezig met een pagina systeem maar nu heb ik een str_replace neer gezet maar die zet er doelloos een 1 bij. Weet iemand hoe ik die wegkrijg

hier de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql = 'SELECT * FROM dos_tekst WHERE page_id ='.$id.'';
$query = mysql_query($sql);
if(mysql_num_rows($query) > 0){
    while ( $list = mysql_fetch_array($query) ){
        $txt = base64_decode($list['tekst']);
        $txtgb = str_replace("~~gastenboek~~", include("gb.php"), $txt);
        if(!empty($txtgb)){
            echo $txtgb;
        }
        elseif(!empty($txt)){
            echo $txt;
        }
    }
}

en de code van gb.php:http://plaatscode.be/139919/

alvast bedankt, bas
 
PHP hulp

PHP hulp

05/11/2024 22:18:14
 
Jelmer -

Jelmer -

31/08/2010 23:52:35
Quote Anchor link
Je moet even kijken naar wat de handleiding over include zegt, en dan specifiek naar wat return in het bestand dat je include doet.

Of samengevat: zo werkt include niet. Dat wat je in gb.php echo't komt niet als return-value terug. Als je een return-statement in gb.php gebruikt dan wel, en anders krijg je gewoon boolean true terug, wat zich vertaalt in een 1 als je er een string van maakt.

Je kan trouwens ob_start en ob_get_clean gebruiken om gemakkelijk die uitvoer van gb.php op te vangen en in een variabele te stoppen. Dan kan je die waarden gebruiken in str_replace:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function capture_php_file($file)
{

    ob_start();
    include $file;
    return ob_get_clean();
}


$txtgb = str_replace('~~gastenboek~~', capture_php_file('gb.php'), $txt);
?>

Bijkomend voordeel van een functie gebruiken hier is dat je include-statement niet in dezelfde scope zit als de rest van je code. Anders zou je binnen gb.php de variabele $txt bijvoorbeeld kunnen gebruiken, en per ongeluk overschrijven. Zo gebeurt dat niet.
 
Bas Php

Bas Php

01/09/2010 16:30:59
Quote Anchor link
ok ik zal er naar kijken, alvast bedankt voor je hulp

Toevoeging op 01/09/2010 17:21:38:

het werkt, dank;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.