WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   preg_replace_callback (https://www.wn.se/forum/showthread.php?t=1049524)

em0c4tz 2011-08-15 11:23

preg_replace_callback
 
Hej.

Jag försöker skapa ett enkelt system för att använda en viss funktion under vissa specifika undersidor.

Såhär hade jag tänkt mig:

En fil är skapad, ex: bildspel.php

En databaskoppling är ansluten till filen och information som ska visas i kontentan ska hämtas från databasen.

Informationen som hämtas från databasen finns i 'post_content'.

I just 'post_content' är tanken att man enkelt ska kunna skriva informationen om vald undersida, samt att man även ska kunna inkludera färdiga funktioner som är tillagda på FTP:n. Ungefär såhär:

Vi på företaget AB skulle vilja visa er vårt bildspel:
[include]inc.slider.php[/include]
Vi vill tacka Foto Grafen för alla bilder!

Mitt resultat av texten ovan skulle bli en output på detta:
Bildspelet (include fungerar)
Vi på företaget AB skulle vilja visa er vårt bildspel:
Vi vill tacka Foto Grafen för alla fotona.
(Jag får även med en 1 på köpet?)

Jag vill att det blir såhär:
Vi på företaget AB skulle vilja visa er vårt bildspel:
Bildspelet (include fungerar)
Vi vill tacka Foto Grafen för alla fotona.
(Ingen 1)

Jag förmodar att ni förstår att texten mellan [include][/include] är den fil som ska inkluderas. I detta fall blir resultatet:
include "inc.slider.php";

Jag använder mig av funktionen 'preg_replace_callback' som borde vara den rätta?

Tack på förhand!

Edit: om man vill lägga till ett kontaktformulär istället för ett bildspel så skriver man [include]inc.contact.form.php[/include] istället för [include]inc.slider.php[/include].

qson 2011-08-15 11:53

Hur ser din php-kod ut?
Någonstans har du en echo eller print på någonting, förmodligen ett boolean-värde eller ett funktionsanrop som returnerar true.

em0c4tz 2011-08-15 12:02

Citat:

Ursprungligen postat av qson (Inlägg 20414591)
Hur ser din php-kod ut?
Någonstans har du en echo eller print på någonting, förmodligen ett boolean-värde eller ett funktionsanrop som returnerar true.

Såhär ser det ut:
function parse_tags_recursive($input) {
$regex = '#\[inc]((?:[^[]|\[(?!/?inc])|(?R))+)\[/inc]#';

if(is_array($input)) {
$input = require_once($input[1]);
}

return preg_replace_callback($regex, 'parse_tags_recursive', $input);
}

$post_content = parse_tags_recursive($row['post_content']);


Alla tider är GMT +2. Klockan är nu 03:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson