Str_replace zet er 1 bij?
Bas Php
31/08/2010 23:45:15Hallo 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:
en de code van gb.php:http://plaatscode.be/139919/
alvast bedankt, bas
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
}
}
}
$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
21/12/2024 17:49:50Jelmer -
31/08/2010 23:52:35Je 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:
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.
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)
1
2
3
4
5
6
7
8
9
10
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);
?>
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
01/09/2010 16:30:59ok ik zal er naar kijken, alvast bedankt voor je hulp
Toevoeging op 01/09/2010 17:21:38:
het werkt, dank;)
Toevoeging op 01/09/2010 17:21:38:
het werkt, dank;)