[PHP] eregi_replace und PHP CODE einfuegen

  1. m0mo

    m0mo Thread StarterMacUser Mitglied

    Mitglied seit:
    26.03.2005
    Beiträge:
    476
    Zustimmungen:
    2
    Hallo Leute, kurzknackige Frage:

    Ich hab fuer eine Textformatierung immer BBCODE Befehle die dann umgewandelt wurden, wie z.B. sowas hier:

    PHP:
    # fuer Ueberschriften 
    $return eregi_replace("\[ueber\]""<h3>"$return);
    $return eregi_replace("\[\/ueber\]""</h3>"$return);
    Nun moechte ich ein aehnliches Feature einbauen. Wenn man auf eine Seite beispielsweise nur "[news]" eintraegt, sollen alle News, die in einer Tabelle sind, ausgegeben werden. Nun wollte ich das ganze aehnlich angehen, komme aber nicht zum Erfolg.

    PHP:
    $return = eregi_replace("\[news\]", <?php include("incl_news.php"); ?>, $return);
    bringt einen Ausgabefehler, (fehlende Gaensefuesschen)

    und

    PHP:
    $return = eregi_replace("\[news\]", "<?php include(incl_news.php); ?>", $return);
    gibt mir zwar den Text aus, aber nicht den Code.

    Meine Frage: Wie kann ich meinen Wunsch realisieren? Oder muss ich das ganze vollkommen anders angehen?

    mfg
    m0mo
     
    m0mo, 13.02.2006
  2. msslovi0

    msslovi0MacUser Mitglied

    Mitglied seit:
    20.03.2005
    Beiträge:
    2.714
    Zustimmungen:
    115
    Ja, musst du. Du musst zunächst prüfen, ob '[news]' im String vorkommt, dann deine News aus der Datenbank holen und abschließend [news] durch das Ergebnis ersetzen.

    Matt
     
    msslovi0, 13.02.2006
  3. master_p

    master_pMacUser Mitglied

    Mitglied seit:
    31.01.2005
    Beiträge:
    1.063
    Zustimmungen:
    23
    -- Doppelpost --
     
    master_p, 13.02.2006
  4. master_p

    master_pMacUser Mitglied

    Mitglied seit:
    31.01.2005
    Beiträge:
    1.063
    Zustimmungen:
    23
    Warum machst Du es nicht in dieser Art:

    Code:
    $arr = explode("[news]", $text);
    
    if (isset($explode[1]) AND $explode[1]!="") {
       $news = getNews();
       print $explode[0].$news.$explode[1];
    }
    
    Vielleicht nicht ganz so hübsch und vielleicht im Laufverhalten auch etwas langsamer, aber dadurch, dass man für diesen Code 30 Sekunden braucht und Du bis zum richtigen Ergebnis mehrere Stunden nachdenkst, steht es in keinem wirtschaftlichen Verhältnis zueinander, weshalb ich meine Lösung für sinnvoller halte.

    Gruß Philip
     
    master_p, 13.02.2006
  5. dms

    dms

    Oder so:

    Code:
    $return = eregi_replace("\[news\]",  file_get_contents("http://".$_SERVER["HTTP_HOST"]."/externer_pfad_zu/incl_news.php") , $return);
    Hier wird allerdings eine weitere externe HTTP-Anfrage gestellt. Ich würde aber auch eine der anderen Varianten vorziehen.
     
  6. moses_78

    moses_78MacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    Mir ist da gerade noch eine Variante eingefallen, falls
    noch Bedarf besteht, sie würde zumindest kein neues
    HTTP-Request aufrufen...

    PHP:
    <?php

     ob_start
    ();
     include(
    news.php);
     
    $news ob_get_contents();
     
    ob_end_clean();

     
    //etwas mit $news machen...

    ?>
    Ausserdem würde ich zu "str_replace()" raten, da dies
    keine Regexp erwartet und daher schneller ist.
     
    moses_78, 17.02.2006
  7. dms

    dms

    Genial! :)
     
Die Seite wird geladen...
Ähnliche Themen - [PHP] eregi_replace PHP
  1. mampfi
    Antworten:
    7
    Aufrufe:
    259
  2. simusch
    Antworten:
    2
    Aufrufe:
    187
    simusch
    04.05.2017
  3. Saugkraft
    Antworten:
    27
    Aufrufe:
    1.614
  4. alex1000
    Antworten:
    5
    Aufrufe:
    358
  5. eyz
    Antworten:
    1
    Aufrufe:
    434
    Theremin
    18.01.2005