2009-06-21 8 views
0

Ich entwickle eigene CMS und ich möchte Funktionalität implementieren, um vorhandene PHP-Skript dynamisch zu integrieren, die auf dem Server befinden.dynamisch einschließlich PHP-Skripte

Es gibt eine Variable namens $ page_content, die Seiteninhalte einschließlich HTML- und JS-Code enthält, auch enthält es einige von Regex erkannte Texte, erkannter Text wird dann verarbeitet und durch gewünschte dynamisch erzeugte Daten ersetzt. Ich möchte auch neue Skripte mit diesem Regex-Mechanismus auslösen, aber hier ist ein Problem, weil Regex-Erkennung durch Funktion gelöst wird und es scheint, dass wenn ich "include" oder "require" innerhalb der Funktion enthalten Skript durch Funktionsvariable begrenzt ist Umfang, damit ich nicht das Verhalten bekommen kann, das ich brauche.

Was soll ich tun, damit die Dinge so funktionieren, wie ich will? Ich meine, dass ich diese dynamisch eingebundenen Skripte stärker nutzen kann.

Vielen Dank im Voraus MTH

+0

Können Sie ein Codebeispiel von dem geben, was Sie erreichen möchten? –

+0

Es wäre ziemlich schwierig. Kurz gesagt, die Sache ist, dass ich eine oder mehrere Variablen wie $ page_content habe, die den Inhalt von "article" enthalten, und während ich in meinem Code andere Skripte von Hand einfüge, funktioniert alles so, wie ich möchte, dass es funktioniert. Wenn ich Include von Incidee Funktion Sachen mache, hör auf zu owrking. Ich fand heraus, dass, weil Begrenzungen von variablem Umfang in der Funktion, also jetzt ich bin Weg, um mit diesem Problem umzugehen, weil synamically einschließlich der Skripte wäre nützlich für mich – MoreThanChaos

Antwort

1

wollen Sie klingt wie gefährliche Sachen, die du tust. Haben Sie den Fall berücksichtigt, in dem der HTML/JS-Code (der vom Benutzer Ihres CMS eingefügt wird, wie ich annehme) Strings enthält, die zu Ihrer Regex passen?

Wie für die Bereichsfrage: Die Funktion compact() kann die aktuellen Bereichsvariablen in ein Array packen und extract() kann sie erneut setzen. Sei aber sehr, sehr vorsichtig, wenn du diese Funktionen verwendest. Sie könnten andere tatsächlich benötigte Variablen unerwartet überschreiben.

function test($vars) { 
    extract($vars); 
    # The array might have contained the key 'vars', in which case 
    # your function argument is now overwritten. 
} 
+0

Ich bin mir der Gefahr bewusst, aber ich denke, dass ich schon alles bekam herausgefunden, dass kein Risiko besteht. Dieser Teil der Funktion wäre nur für Admin-Benutzer verfügbar Ich habe auch zu experimentieren und ein wenig über die Lösung in dieser Antwort zu lesen und prüfen, ob es wirklich ist, was ich brauche – MoreThanChaos