bert: include in variable / funktion auf include anwenden

Hi,

ich habe eine auto_replace-Funktion geschrieben, die auf jeden include-Inhalt angewendet werden soll. Momentan hab ich das so gelöst, dass die includes so aufgebaut sind, dass der gesamte Inhalt in einer Variable steht.

Beispiel von content.php:

$content = '<h1>Titel</h1><p>Hier steht Text.</p>';

In der Index steht zum includen:

include_once('includes/content.php');
echo auto_replace($request_content);

möchte aber den Inhalt nicht jedesmal in eine Variable schreiben, sondern die replace-Funktion direkt auf das include anwenden. Habe mir das so vorgestellt:

auto_replace(include_once('content.php'));

bzw.

include_once(auto_replace('content.php'));

klappt aber beides nicht.

Jemand ne Idee?

  1. Heißa, bert,

    möchte aber den Inhalt nicht jedesmal in eine Variable schreiben, sondern die replace-Funktion direkt auf das include anwenden. Habe mir das so vorgestellt:

    Möglicherweise suchst du den Output Buffer. Mit ob_start() kannst du ihn starten, die Ausgabe wird fortan nicht mehr an den Browser geschickt, sondern in einen Puffer geladen. Dann lässt du deine Include-Datei Ausgaben machen und liest diese hinterher mit ob_get_contents() aus. Mit ob_end_clean() verhinderst du, dass der gepufferte Inhalt doch noch an den Browser geschickt wird.

    Gautera!
    Grüße aus Biberach Riss,
    Candid Dauth

    --
    „Soggt da Duaschd zum Hunga:
    ‚I hob heid noh niggs drunga.‘
    Do soggt da Hunga zum Duaschd:
    ‚Woaßt wos? Dehs is mia wuaschd!‘“
  2. Hello,

    ich habe eine auto_replace-Funktion geschrieben, die auf jeden include-Inhalt angewendet werden soll. Momentan hab ich das so gelöst, dass die includes so aufgebaut sind, dass der gesamte Inhalt in einer Variable steht.

    Beispiel von content.php:

    $content = '<h1>Titel</h1><p>Hier steht Text.</p>';

    In der Index steht zum includen:

    include_once('includes/content.php');
    echo auto_replace($request_content);

    möchte aber den Inhalt nicht jedesmal in eine Variable schreiben, sondern die replace-Funktion direkt auf das include anwenden. Habe mir das so vorgestellt:

    auto_replace(include_once('content.php'));

    Wieso musst Du denn in einer zu includierenden Datei etwas ersetzen? Wenn es dich stört, schreib es doch gar nicht erst rein! Oder includierst Du etwa von Fremden gelieferte Dateien? Das wäre dann sicherlich nicht unbedingt die richtige Anwendung für include().

    Dann solltest Du zum Einlesen der Inhalte vielleicht lieber file_get_contents() oder fread() nehmen.

    Wenn es denn unbedingt include sein muss, dann kannst Du auch die Ersetzung _vorher_ durchführen. Das ist zwar von hinten durch die Brust ins Auge, aber es ginge:

    Datei einlesen in Variable
       Ersetzungen durchführen
       geänderte Datei in Temp-Datei wegschreiben
       include mit Temp-Datei durchführen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Wieso musst Du denn in einer zu includierenden Datei etwas ersetzen? Wenn es dich stört, schreib es doch gar nicht erst rein! Oder includierst Du etwa von Fremden gelieferte Dateien? Das wäre dann sicherlich nicht unbedingt die richtige Anwendung für include().

      ich include eigene Inhalte, die über ein CMS angelegt werden. Inhalte befinden sich also in einer DB und werden vom CMS autom. verwaltet, included, etc. Der wysiwyg-Editor ist zwar toll, kann aber nicht alles (logo! habe eigene funktionen, dass der Inhalt-Anleger bspw. "[/info[/]hier steht inhalt, der bei hover angezeigt wird/]" eintragen kann, und dass dann auto_replaced wird mit einem Fragezeichen-Bild, welches bei Hover den Infotext anzeigt. Dafür muss ich alles, was das CMS über die Indexdatei included (aus der MySQL-DB ausliest) über meine Funktion laufen lassen.

      1. Hi,

        ich include eigene Inhalte, die über ein CMS angelegt werden. Inhalte befinden sich also in einer DB

        Wieso arbeitest du dann mit include, wenn die Inhalte aus der Datenbank kommen?

        Dafür muss ich alles, was das CMS über die Indexdatei included (aus der MySQL-DB ausliest) über meine Funktion laufen lassen.

        Noch mal - welchen Zusammenhang siehst du zwischen include und dem Auslesen aus der Datenbank?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Wieso arbeitest du dann mit include, wenn die Inhalte aus der Datenbank kommen?

          Das CMS (joomla) arbeitet so, aber auch nicht mit einem "echten" include:

          <jdoc:include type="component" />

          Und auf einer anderen Seite arbeite ich mit einem include, welches nicht aus einer DB kommt, dafür wollte ich das auch wissen. Aber wenn ich das richtig verstanden habe, dann kann man das nur machen, indem man nicht include sondern echo auto_replace(file(datei.php)) macht, also die Datei in eine Variable liest, ersetzt was man will und dann per echo ausspuckt..?