Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: PHP Snippets im Content ersetzen & ausführen

  1. #1
    Großmeister(in) Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard PHP Snippets im Content ersetzen & ausführen

    Ich hab ein kleines Problem mit dem Backend meiner Website.
    Um Inhalte einzufügen/zu pflegen benutze ich erfolgreich den FCKeditor. Klappt alles wunderbar und bin auch sonst zufrieden. Allerdings hab ich ein kleines Problem...

    Eigentlich enthalten meine Seiteninhalte kein PHP. Doch auf manchen bräuchte ich das um kleine "Tools" or what ever darzustellen.
    Jetzt hab ich mir gedacht, ich kann ja die nötigen PHP Scripte in meiner Datenbank speichern.
    Aufrufen tu ich sie dann so:

    Mein Text im FCKeditor:
    Lorem ipsum dolor sit amet, [[PHP_Snippet_Name]] consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

    Das ganze kann ja dann so abgespeichert werden, muss halt dann bei Auslesen aus der Datenbank durch eine Funktion, die alle [[xxxxxx]]-Tags durch die PHP Snippets ersetzt.
    Genau hier liegt mein problem.
    Einen Regulären Ausdruck der mir das alles Ausliest hab ich schon. Allerdings hab ich keine Ahnung wie ich den PHP Code dann ausführen kann...
    Das ist mein Code bisher. Ist noch die reinste Baustelle... Und ist auch noch ohne Datenbankverbindungen...
    PHP-Code:
    <?php

    $text 
    "[[blabla]]Test Test Test Test Test Test Test <br />
    Test Test Test Test Test Test Test <br />
    [[snippet]] Test Test Test Test Test [[snippet2]]?"
    ;

    $snippet[] = "<?php echo 'lol1'; ?>";
    $snippet[] = "<?php echo 'lol2'; ?>";
    $snippet[] = "<?php echo 'lol3'; ?>";

    $vorkommen strpos($text,'[[snippet]]');

    if (
    $vorkommen !== false) {
        
    preg_match_all('/\[\[(.+?)\]\]/is',$text,$ergebnis);
        for (
    $i=0;$i<=count($ergebnis);$i++) {
            
    $text str_replace($ergebnis[0][$i],$snippet[$i],$text);
        }
        echo 
    $text;
    }

    ?>
    Hat jemand eine Idee? Muss nicht auf das aufbauen was ich hier schon programmiert habe, falls jemandem was besseres einfällt immer her damit

    Danke im voraus
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Don't follow me, I run into walls.

  2. #2
    Pion
    Gast

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    Eval wäre dein freund/feind

    Ich empfehl es nicht aber diese Funktion suchst du

  3. #3
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    Danke für den Tipp. Das scheint wohl wirklich das zu sein was ich brauch.
    Hab mein Script jetzt mal so umgebaut. Sieht jetzt so aus... Allerdings bekomm ich jetzt den PHP Code vor dem Text ausgegeben und nicht da wo er eigentlich sein soll...
    PHP-Code:
    <?php

    $text 
    "[[blabla]]Test Test Test Test Test Test Test <br />
    Test Test Test Test Test Test Test <br />
    [[snippet]] Test Test Test Test Test [[snippet2]]?"
    ;

    $snippet[] = "echo 'lol1';";
    $snippet[] = "echo 'lol2';";
    $snippet[] = "echo 'lol3';";

    $vorkommen strpos($text,'[[snippet]]');

    if (
    $vorkommen !== false) {
        
    preg_match_all('/\[\[(.+?)\]\]/is',$text,$ergebnis);
        for (
    $i=0;$i<=count($ergebnis);$i++) {
            
    $text str_replace($ergebnis[0][$i],eval($snippet[$i]),$text);
        }
        echo 
    $text;
    }

    ?>
    Don't follow me, I run into walls.

  4. #4
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    weil eval den code ausführt, als würde er dort stehen. Eval fängt die Ausgabe vom Code nicht auf.dazu brauchst du einen output-buffer,
    ob_start();
    ob_get_contents();
    ob_end_clean();
    PS.:
    Höchstwarscheinlich sieht eval() so aus:
    PHP-Code:
    function eval($str) {
        
    // eine nicht-existierende datei suchen
        
    file_put_contents($file$str);
        
    inclue($str);
        
    unlink($file);

    Geändert von Tobse (15.07.2010 um 21:52 Uhr)
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  5. #5
    Forum Guru Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    was is eigentlich das hier fürn konstrukt:
    PHP-Code:
    if ($vorkommen !== false){

    is des net des gleiche wie:
    PHP-Code:
    if ($vorkommen){

    ??

    ich bin ja nich ganz so firm in php... aber wenn ich frage ist etwas nicht false dann kann ich auch auf true abfragen oder sehe ich das falsch?
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  6. #6
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    Natürlich geht das, aber $vorkommen ist ja nicht true sondern ein int oder eben false.
    if ($vorkommen) { funktioniert, ist aber ungefähr wie $array[key] anstatt $array["key"] zu schreiben, denn $vorkmmen ist ja wie gesagt nicht true.
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  7. #7
    Bandit
    Gast

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    PHP-Code:
    <?php
    $vorkommen 
    0;
    if (
    $vorkommen !== false)
       echo 
    '$vorkommen !== false<br>';
    else
      echo 
    '$vorkommen === false<br>';
     
    if (
    $vorkommen)
       echo 
    '$vorkommen hat einen Wert<br>';
    else
      echo 
    '$vorkommen hat keinen Wert<br>';
     
    $vorkommen 1;
    if (
    $vorkommen !== false)
       echo 
    '$vorkommen !== false<br>';
    else
      echo 
    '$vorkommen === false<br>';
     
    if (
    $vorkommen)
       echo 
    '$vorkommen hat einen Wert<br>';
    else
      echo 
    '$vorkommen hat keinen Wert<br>';
     
    $vorkommen true;
    if (
    $vorkommen !== false)
       echo 
    '$vorkommen !== false<br>';
    else
      echo 
    '$vorkommen === false<br>';
     
    if (
    $vorkommen)
       echo 
    '$vorkommen hat einen Wert<br>';
    else
      echo 
    '$vorkommen hat keinen Wert<br>';
     
    $vorkommen false;
    if (
    $vorkommen !== false)
       echo 
    '$vorkommen !== false<br>';
    else
      echo 
    '$vorkommen === false<br>';
     
    if (
    $vorkommen)
       echo 
    '$vorkommen hat einen Wert<br>';
    else
      echo 
    '$vorkommen hat keinen Wert<br>';
    ?>
    Ausgabe
    $vorkommen !== false
    $vorkommen hat keinen Wert
    $vorkommen !== false
    $vorkommen hat einen Wert
    $vorkommen !== false
    $vorkommen hat einen Wert
    $vorkommen !== false
    $vorkommen hat keinen Wert

    Aus der Doku:
    Die Sprache unterstützt weiterhin ein Set von absoluten Vergleichsoperatoren: === (inhalts- und typgleich) und !== (nicht inhalts- oder typgleich).
    Zitat Zitat von Tobse Beitrag anzeigen
    Höchstwarscheinlich sieht eval() so aus:
    Das wäre eine extrem billige Lösung und wird grantiert nicht so gemacht!!!
    Geändert von bandit600 (15.07.2010 um 22:45 Uhr)

  8. #8
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    @bandit: ja warum denn nicht? Ich finde, dann hätte php seine eigene power gut genutzt, uneffizient ist es natürlich, da haste vollkommen recht. Nichts desto trotz wirkt eval() genau wie diese funktion es auch tut. Back2Topic: versuchs damit:
    PHP-Code:
    function run($str) {
        
    ob_start();
        eval(
    $str);
        
    $str=ob_get_contents();
        
    ob_end_clean();
        return 
    $str;

    Geändert von Tobse (16.07.2010 um 00:39 Uhr)
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  9. #9
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    Danke Tobse, das scheint zu funktionieren. Ich werd mal versuchen das Script jetzt abzuändenr, das es sich das PHP aus einer Datenbank holt...

    EDIT//

    Hab das ganze jetzt abgeändert, allerdings bekomm ich jetzt eine Notice "Notice: Undefined offset: 1 in /www/htdocs/xxxxxx/xxxxxx/includes/functions.inc.php on line 191"

    Hab schon die ganze Zeit rumprobiert aber ich bekomms nicht wirklich hin... Das ersetzen klappt allerdings wunderbar Der Code wird auch ausgeführt.
    ...hab gerade nochmal geschaut was passiert wenn ich mehr als ein "snippet" einbinde. Dann kommt keine Notice. Nur wenn EIN snippet im Content ist...

    PHP-Code:
    function run($str) {
        
    ob_start();
        eval(
    $str);
        
    $str=ob_get_contents();
        
    ob_end_clean();
        return 
    $str;
    }
    function 
    getSnippets($text,$resource) {
        
    preg_match_all('/\[\[(.+?)\]\]/is',$text,$ergebnis);
        for (
    $i=0;$i<count($ergebnis);$i++) {
            
    $snippet_tag $ergebnis[0][$i];
            
    $name substr($snippet_tag2, -2);
            
    $snippet_query "SELECT code FROM snippets WHERE name = '{$name}'";
            
    $snippet_result mysql_query($snippet_query,$resource);
            if (
    mysql_num_rows($snippet_result) > 0) {
                
    $snippet mysql_fetch_array($snippet_result);
                
    $text str_replace($snippet_tag,run($snippet['code']),$text);
            }
        }
        return 
    $text;

    Geändert von MyXoToD (16.07.2010 um 10:29 Uhr)
    Don't follow me, I run into walls.

  10. #10
    Bandit
    Gast

    Standard AW: PHP Snippets im Content ersetzen & ausführen

    "Notice: Undefined offset: 1 in /www/htdocs/xxxxxx/xxxxxx/includes/functions.inc.php on line 191"
    Ich sehe nur 21 Zeilen Quellcode
    Zu vermuten ist diese Zeile:
    PHP-Code:
    $snippet_tag $ergebnis[0][$i]; 
    Und da hilft
    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Ähnliche Themen

  1. Kontaktformular ersetzen
    Von bolle im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 4
    Letzter Beitrag: 15.07.2009, 20:07
  2. Scrolbalken ersetzen
    Von haillo im Forum HTML & CSS Forum
    Antworten: 10
    Letzter Beitrag: 04.07.2008, 14:16
  3. ersetzen
    Von tamiiiiii im Forum Off Topic und Quasselbox
    Antworten: 0
    Letzter Beitrag: 20.03.2007, 18:41
  4. PloneDefault Content Type ersetzen
    Von mgraf im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 1
    Letzter Beitrag: 25.09.2006, 22:21
  5. PHP - variable ersetzen?
    Von tanja2 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 15.08.2006, 22:08

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •