str_replace met PHP code
Koek - 08/06/2009 19:21 (laatste wijziging 08/06/2009 19:22)
Nieuw lid
Hallo,
Ik ben tegen een probleempje aangelopen tijdens het bouwen van m'n eigen CMS'je.
Alle teksten van de inhoud staan in de database, maar daar wil ik natuurlijk geen PHP code in plaatsen.
Dus ik denk, ik replace gewoon een 'tag' in de tekst, zodat je die wel in de db kan plaatsen, zoiets als het volgende, bijvoorbeeld:
<?php
$text = 'Dit is de gebruikers lijst: {user_list}';
$search = '{user_list}';
$replace = '<?php include(\'user_list.php\'); ?>';
$content = str_replace($search, $replace, $text);
?>
<?php
$text = 'Dit is de gebruikers lijst: {user_list}' ;
$search = '{user_list}' ;
$replace = '<?php include(\' user_list. php\'); ?>' ;
?>
Maar dat werkt dus niet, hij ziet het stukje php code als een html tag of iets dergelijks.
Nu is mijn vraag hoe ik dit op kan lossen?
Misschien een totaal andere aanpak, in plaats van str_replace?
Alvast bedankt,
Maikel.
15 antwoorden
Gesponsorde links
Martijn - 08/06/2009 19:24 (laatste wijziging 08/06/2009 19:24)
Crew PHP
' vervangen door ". Dus single door double
edit: bij de $replace
Koek - 08/06/2009 19:26 (laatste wijziging 08/06/2009 19:26)
Nieuw lid
Welke? Die buitenste? en dan de slashes weghalen?
"<?php include('user_list.php'); ?>";
Dat maakt geen verschil..
Martijn - 08/06/2009 19:31
Crew PHP
hmm dacht dat dat het was omdat alles tussen single letterlijk word genomen.
Wat zou kunnen is:
$content = file_get_contents("user_list.php");
en dat in je replace zetten
en als dat niet werkt, alles wat in user_list.php echoëd in een $var zetten, dan boven je replace includen en dan die $var in je replace zetten
Koek - 08/06/2009 20:04
Nieuw lid
Helaas, werkt ook beide niet...
Koek - 08/06/2009 20:07
Nieuw lid
Werkt ook niet helemaal soepel, en dan zou ik weer heel omslachtig m'n while-lus in één enkele variabele moeten zetten?
Is niet helemaal wat ik bedoel...
Wim - 08/06/2009 20:16
Crew algemeen
Je kan het trouwens wel doen met preg_replace. Dit heeft een optie (e) om php code te laten uitvoeren:
$text= preg_replace ("_\{userlist\}_se", "include('user_list.php');", $text);
$text = preg_replace ( "_\{userlist\}_se" , "include('user_list.php');" , $text ) ;
Of het bestand telkens includen verstandig is is een andere vraag...
Koek - 08/06/2009 20:22
Nieuw lid
Hm.. Heb nu dit:
<?php
$content = preg_replace ("_\{photo_album_list\}_se","include('content/photo_album_list.php');",$arr['content_text']);
echo $content;
?>
<?php
$content = preg_replace ( "_\{photo_album_list\}_se" , "include('content/photo_album_list.php');" , $arr [ 'content_text' ] ) ; ?>
Maar krijg dit:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'a' in /home/route66/public_html/inc/content.php on line 24.
(en lijn 24 is dus die regel..)
Joost - 08/06/2009 20:25
PHP expert
<?php
$content = preg_replace ("#\{photo_album_list\}#se","include('content/photo_album_list.php');",$arr['content_text']);
echo $content;
?>
<?php
$content = preg_replace ( "#\{photo_album_list\}#se" , "include('content/photo_album_list.php');" , $arr [ 'content_text' ] ) ; ?>
Die zou het moeten doen
Wim - 08/06/2009 20:46
Crew algemeen
Koek schreef:
Hm.. Heb nu dit:
[..code..]
Maar krijg dit:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'a' in /home/route66/public_html/inc/content.php on line 24.
(en lijn 24 is dus die regel..)
owja, sorry, de _ was ik vergeten te escapen
Die van medievel doet het ook, dit is hetzelfde:
$content = preg_replace ("_\{photo\_album\_list\}_se","include('content/photo_album_list.php');",$arr['content_text']);
$content = preg_replace ( "_\{photo\_album\_list\}_se" , "include('content/photo_album_list.php');" , $arr [ 'content_text' ] ) ;
Koek - 08/06/2009 20:55
Nieuw lid
't Werkt in principe wel, maar...
Nu komt het ge-include script bovenaan de pagina te staan, en niet op de locatie waar ik de 'tag' ( {photo_album_list} ) heb staan..
(en om een of andere vage reden staat er een '1' wél op de locatie waar de tag staat...)
Wim - 08/06/2009 21:34
Crew algemeen
en wat als je gebruik maakt van file_get_contents ipv include?
Koek - 08/06/2009 21:38
Nieuw lid
Werkt ook niet zoals ik het wil...
Gesponsorde links
Dit onderwerp is gesloten .