[PHP] dmv. str_replace (oid) een hele pagina includen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een klein probleempje waar ik zelf niet uitkom (ik weet zelfs niet waar ik ongeveer moet beginnen met zoeken voor een oplossing voor dit probleem)


Enniewee:

Op een pagina wil ik de volgende text (vanuit dbase bv) neerzetten:

code:
1
2
3
Bakker, mag ik van u twee kilo paling? 
[bakkerrespons] 
Ow, dan ga ik wel naar de schoenenwinkel.


Nu wil ik voor elke keer dat de text [bakkerrespons] voorkomt, deze text vervangen voor een hele php pagina.

in de pagina "bakkerrespons" staat bijvoorbeeld:
code:
1
2
3
$vloek = "Jij rare kwibus!"
echo "<h1>$vloek<h1><br>";
echo "Tief een eind op naar de visboer, schavuit! <br>";



De uiteindelijke pagina komt er dus als volgt uit te zien:

code:
1
2
3
4
Bakker, mag ik van u twee kilo paling? 
Jij rare kwibus!
Tief een eind op naar de visboer, schavuit!
Ow, dan ga ik wel naar de schoenenwinkel.



Ik kan dit natuurlijk ook bereiken door een functie te maken die de uiteindelijke string die uit bakkerrespons komt returned...

Maar dat vindt ik zelf niet een al te fraaie manier...

(bijvoorbeeld:)


code:
1
2
3
4
5
6
7
8
9
<?
function bakkerrespons()
{
 $vloek = "Jij rare kwibus!"
 $zin .= "<h1>$vloek<h1><br>";
 $zin .= "Tief een eind op naar de visboer, schavuit! <br>";
 return $zin
}
?>


En dan in mijn "hoofdpagina" het volgende:
code:
1
2
3
4
5
$text = "Bakker, mag ik van u twee kilo paling?
              [bakkerrespons] 
              Ow, dan ga ik wel naar de schoenenwinkel.";

echo str_replace("[bakkerrespons]",bakkerrespons(),$text);



Heeft iemand een idee hoe ik dit voor elkaar kan krijgen op de manier hoe ik het wil? :D

Acties:
  • 0 Henk 'm!

Verwijderd

De bakkerresponse pagina als variable includen.

Als dat niet sowieso al kan moet je even kijken naar caching, dan kan het wel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hm als ik die pagina als variabele include, dan wordt de pagina al "uitgevoerd" wanneer ik hem aan die variabele wil toewijzen... Dat werkt dus helaas niet ;( , (teminste niet op mijn manier:

code:
1
$blaat = include('includes/inkloed.php');


Misschien zou het inderdaad wel kunnen dmv caching, alleen dit lijkt me wel een erg omslachtige manier om dit voor elkaar te krijgen?

Is er geen makkelijkere manier waarmee ik dit kan doen? :*)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 12 september 2004 @ 18:26:
Is er geen makkelijkere manier waarmee ik dit kan doen? :*)
Jawel:

PHP:
1
2
3
4
ob_start();
include("file.php");
$data = ob_get_contents();
ob_clean();

Acties:
  • 0 Henk 'm!

  • AlexAuto
  • Registratie: Februari 2001
  • Laatst online: 20-09 21:34

AlexAuto

Parttime Tweaker

Nog makkelijker:
PHP:
1
$data = file_get_contents("bestand.php");

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

AlexAuto schreef op 12 september 2004 @ 18:53:
Nog makkelijker:
PHP:
1
$data = file_get_contents("bestand.php");
Dat parset het bestand toch niet, tenzij je een volledige URL opgeeft? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Sla het de tekstjes op in een txt of xml bestand en lees dat uit?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor alle verschillende oplossingen,

Ik ben uiteindelijk toch gegaan voor de oplossing van Lusch,

hiervan weet ik zeker dattie ook werkt op de uiteindelijke server, voor de file_get_contents functie is php 4.3 of hoger nodig, en ik gloof niet dat deze op de server staat waar ik mijn meuk op zet :D


Enniewee, dit is de oplossing die ik nu heb uitgewerkt (en nog verder ga uitwerken)

mainpage:
PHP:
1
echo bbparse(stripslashes($content->text))."<br>\n\n";


functions.php: (waar gewoon een zootje algemene functies in staan
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function bbinclude($file)
{
       ob_start();
       include("includes/".$file.".php");
       $data = ob_get_contents();
       ob_clean();
       return $data;
}

function bbparse($text)
{
       // Hier komen dus een zooi (uitgebreide bb-achtige) commando's
       $text = str_replace("[sl]",bbinclude("inkloed1"),$text);
       $text = str_replace("[sl2]",bbinclude("inkloed2"),$text);
       
       return $text;
}


inkloed1.php
PHP:
1
2
3
<?
echo "Jaaahaaaa"
?>


Tnx a bunch voor jullie hulp :*) /me is weer een vrolijk mensch B)

[ Voor 7% gewijzigd door Verwijderd op 12-09-2004 21:45 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Even ter extra info en als waarschuwing:

Pas je wel op dat je die functie niet zo aanroept:
PHP:
1
bbinclude($_GET['index']);

Niet echt veilig enzo. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 12 september 2004 @ 18:43:
PHP:
1
2
3
4
ob_start();
include("file.php");
$data = ob_get_contents();
ob_clean();
 
Dit ís de caching-methode waar ik over sprak...
Pagina: 1