kostenloser Webspace werbefrei: lima-city


Fehler in preg_replace ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gaestefun

    Kostenloser Webspace von gaestefun

    gaestefun hat kostenlosen Webspace.

    Hallo!
    ICh wollte eine Funktion machen, die mir ein DIV Container bearbeitet(Inhalt löschen,und udrch include ersetzen) und in diesen ein Include setzt, doch hier bei gibt es einen Fehler, hier der Code:
    preg_replace('<div id="temp_menu">*\</div>', '<div id="temp_menu"><?php include("menu.php"); ?></div>', $Inhalt );
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der richtige Regex lautet:
    #<div id="temp_menu">.*?</div>#
  4. gaestefun schrieb:
    Hallo!
    ICh wollte eine Funktion machen, die mir ein DIV Container bearbeitet(Inhalt löschen,und udrch include ersetzen) und in diesen ein Include setzt, doch hier bei gibt es einen Fehler, hier der Code:


    Lies Dir nochmal genau durch was die include-Funktion macht , so kann das auch nicht klappen.
    Include ersetzt im Code alles durch das was innerhalb der Datei steht.
    Du müstest alles was in menue.php per echo (o.ä) ausgegeben wird, stattdessen in einer Varaible ausgeben.
    also statt: echo "hallo welt", schreibst Du z.B $menuetxt .= "hallo welt".
    Und dann den Code so abändern:
    (mit dem Regex von Nikic & ungetestet)
    include("menu.php"); 
    preg_replace('/<div id="temp_menu">.*?</div>/', '<div id="temp_menu">'.$menuetxt.'</div>', $Inhalt );



    Beitrag zuletzt geändert: 15.7.2010 15:42:21 von simuliertes
  5. Autor dieses Themas

    gaestefun

    Kostenloser Webspace von gaestefun

    gaestefun hat kostenlosen Webspace.

    Das Problem ist, das in dem Dokument eine while schleife ist, also das Dokument menu.php sieht so aus(Code nach oben abgeschnitten):
    $SQLcode = "SELECT * FROM  Webseiten WHERE Benutzer = '$benutzer' LIMIT 5 ";
                                $mysqlfrage = mysql_query($SQLcode);
                                 while($row = mysql_fetch_object($mysqlfrage))
        {
        $besitzer = $row->Benutzer;
        $dateiname = $row->dateiname;
        echo'<li><a href="user='.$besitzer.'&sub='.$dateiname.'" class="current"><span></span>'.$dateiname.'</a></li>';
        }

    Wie soll man das dann ausgeben ?
  6. ob_start(); // starte Output Buffering
    include 'menu.php'; // Wie oft muss ich noch sagen, dass include keine Funktion ist?!?
    $Inhalt = preg_replace(
        '#<div id="temp_menu">.*?</div>#', // PCRE
        '<div id="temp_menu">'.ob_get_clean().'</div>', // Ausgabe von menu.php einfügen
        $Inhalt);
  7. gaestefun schrieb:
    (..)
    Wie soll man das dann ausgeben ?


    Wie bereits gesagt.
    ausgehend von meinem Code wäre das dann:
    $menuetxt .= '<li><a href="user='.$besitzer.'&sub='.$dateiname.'" class="current"><span></span>'.$dateiname.'</a></li>';


    beachte den kleinen Punkt vor dem gleich-Zeichen.

    EDIT: streichen- Nikic's vorschlag ist besser:angel:

    Beitrag zuletzt geändert: 16.7.2010 10:40:08 von simuliertes
  8. Autor dieses Themas

    gaestefun

    Kostenloser Webspace von gaestefun

    gaestefun hat kostenlosen Webspace.

    mmh aus ihrgendeinem Grund funktioniert das nicht, er gibt mir die Seite ohne preg_replace aus, so als gäbe ein keine übereinstimmung
  9. Könntest du bitte sagen, welchen RegExp zu gerade benutzt und könntest du den Quellcode zeigen, in dem du das div ersetzen willst?
  10. Autor dieses Themas

    gaestefun

    Kostenloser Webspace von gaestefun

    gaestefun hat kostenlosen Webspace.

    //Wenn keine unterseite angegeben ist...
    if(htmlspecialchars($_GET['sub'])== ''){
    //Abfrage der letzeten erstellten seite vom Nutzer
    $SQLcode = "SELECT * FROM  Webseiten WHERE Benutzer = '$benutzer'  ORDER BY id DESC LIMIT 1";
    
    }
    else{
    //Wenn ja...
    $subpage = htmlspecialchars($_GET['sub']);
     //Suche nach der Datei
     $SQLcode = "SELECT * FROM  Webseiten WHERE Benutzer = '$benutzer' AND Dateiname = '$subpage'  ORDER BY id DESC LIMIT 1";
    
    }
    //Ausgabe
    $mysqlfrage = mysql_query($SQLcode);
    while($row = mysql_fetch_object($mysqlfrage))
        {
        $Inhalt = $row->Inhalt;
        ob_start();
    include 'menu.php';
    $Inhalt2 = preg_replace(
        '#<div id="temp_menu">.*?</div>#',
        '<div id="temp_menu">'.ob_get_clean().'</div>',
        $Inhalt);
        $Dateiname= $row->Dateiname;
         echo $Inhalt2;
    
        }

    So habe ich das gemacht

    Ein Beispiel für $Inhalt:
    <div id="site_title"> 
    			<h1> 
    				<a href="http://homepagebaukasten.xe.cx/Designs/templatemo_234_portfolio/index.html"> Blue <span>Wir sind f&uuml;r die da!</span> </a></h1> 
    		</div> 
    		<div id="temp_menu"> 
    			<ul> 
    				<li> 
    					<a class="current" href="user.php?user=demo&amp;sub=Home">Home</a></li> 
    				<li> 
    					<a class="current" href="user.php?user=demo&amp;sub=Impressum">Impressum</a></li> 
    			</ul> 
    		</div>
  11. Da das Menü mehrzeilig ist musst du den s-Modifier setzen. Das sollte schon genügen.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!