benji: Regüläre Ausdrücke - ich raffs net - "Pattern Syntax" ...

Hallo !

--> hinweis: Dieses ganze gelaber unter diesem absatz ist eigentlich egal, meine frage ist nur gaaaaanz kurz: Ich bekomme einen regulären ausdruck nicht hin :(

Also, eigentlich wollte ich nur mal so zum Spaß so eine Art "Druckversion" mit PHP machen. Also:

Nehmen wir an, alle Seiten der HP sind nach dem Prinzip:

<?php
 $title = "<title>-Tag";
 include "../librarys/top.php";
?>
Text auf dieser Seite
<?php
 include "../librarys/end.php";
?>

aufgebaut. Nun könnte man daraus ganz leicht und schnell eine "Druckversion" machen: Einfach Quelltext einlesen, PHP-Tags raus und fertig. Die Seite ist also schön in der Variable "$seite" eingespeist (bzw. der gesamte Seitenquelltext mit PHP-Tags, z.B. das obige Beispiel. Meine jetzige "Druckvorschau-Seite", bzw. der ENTWURF, sieht also so aus:

<?php
$errmessage = array();

if(!isset($QUERY_STRING))
 { $errmessage[0] = "<big><b>FEHLER:</b> Diese Seite wurde falsch verlinkt ! - <a href="javascript:history.back()">zurück</a>"; }

$sideurl = $QUERY_STRING;

if(file_exists($sideurl) == false)
 { $errmessage[1] = "<big><b>FEHLER:</b> Die angegebene Datei existiert nicht. Evv. wurde sie falsch verlinkt. <a href="javascript:history.back()">zurück</a>"; }

$seite = join('', file($sideurl));
 $seite = preg_replace("</?php (\n*) /?>", "", $seite);

?>

<html>
<head>
 <title>Sveni Webserver - Druckversion von <?php echo $sideurl; ?></title>
 <link rel="StyleSheet" href="../librarys/style.css" type="text/css">
</head>
<body>
<!-- falls $errmessage 0Objekte hat, wirds gelöscht, und wenns danach noch existiert, wirds hier ausgegeben -->
<h1>Druckversion ...</h1>
<?php
 echo $seite
?>

schön, wie man sieht, wird in dieser Zeile

$seite = preg_replace("</?php (\n*) /?>", "", $seite);

der PHP-Code weggenommen. Er stört zwar sowieso nicht, aber evv. hat ein Browser Probleme damit, dass da plötzlich <?php steht und er nichts damit anzufangen hat.

Meine einfache Frage: Wie schaffe ich es mit einem regulären Ausdruck, dass er mir so was:

<?php
  balsdkjadflsdfkweß023465ß2j4flasdmvn... nein nein, inhalt halt egal
  und soll ruhig ganz lang sein dürfen ;-)
?>

wegmacht ? sowas: "</?php (\n*) /?>" funktioniert leider nicht.

Also, danke dann,

benji

  1. Hi,

    sowas: "</?php (\n*) /?>" funktioniert leider nicht.

    sowas steht für die Zeichekette "</?php", gefolgt von einem Leerzeichen, gefolgt von beliebig vielen (Unix-)Umbrüchen, gefolgt von einem Leerzeichen und von "/?>". Du möchtest Dich mit Zeichenklassen beschäftigen, den Backslash anstatt des Slashes als Escape-Zeichen erkennen sowie über die Leerzeichen nachdenken.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah !

      sowas: "</?php (\n*) /?>" funktioniert leider nicht.

      sowas steht für die Zeichekette "</?php", gefolgt von einem Leerzeichen, gefolgt von beliebig vielen (Unix-)Umbrüchen, gefolgt von einem Leerzeichen und von "/?>".

      ach so, dann also müsste es so aussehen: "</?php(*)/?>" - dann also kann es so aussehen:

      <?php                              oder auch so:      <?php asldajkhf
      asdfklsdjgfsdflgk                                     asdfsdf sdf sdgdfg  ?>
      ?>

      ? oder nicht ?

      Du möchtest Dich mit Zeichenklassen beschäftigen, den Backslash anstatt des Slashes als Escape-Zeichen erkennen sowie über die Leerzeichen nachdenken.

      Tja, aber dann schau das dir mal an in der offiziellen PHP-Doku - DA rafft man GAR NICHTS. Im vergleich zu der Javascript-Reguläreausdrücke-Erklären-seite von Selfhtml ist das das letze, vom experten in 5 min runtergeschriebene ...

      Cheatah

      hoffe du antwortest mir

      benji

      1. Hi,

        sowas: "</?php (\n*) /?>" funktioniert leider nicht.
        sowas steht für die Zeichekette "</?php", gefolgt von einem Leerzeichen, gefolgt von beliebig vielen (Unix-)Umbrüchen, gefolgt von einem Leerzeichen und von "/?>".

        kleiner Fehler meinerseits: "</?php" bezieht sich auf "<php" oder "</php"; bei "/?>" entsprechend.

        ach so, dann also müsste es so aussehen: "</?php(*)/?>"

        Nein. Der Slash ist immer noch kein Escape-Zeichen, und das Sternchen muss sich auf ein Pattern beziehen.

        Tja, aber dann schau das dir mal an in der offiziellen PHP-Doku - DA rafft man GAR NICHTS.

        Niemand hat gesagt, Regular Expressions seien leicht.

        Im vergleich zu der Javascript-Reguläreausdrücke-Erklären-seite von Selfhtml ist das das letze, vom experten in 5 min runtergeschriebene ...

        Dann verstehe es anhand des JavaScript-Kapitels von SelfHTML.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Im vergleich zu der Javascript-Reguläreausdrücke-Erklären-seite von Selfhtml ist das das letze, vom experten in 5 min runtergeschriebene ...

          Dann verstehe es anhand des JavaScript-Kapitels von SelfHTML.

          IN Javascript ist es ein bisschen anderer Syntax - und dank der guten Erklärung leicht zu verstehen - danke Stefan (Münz) ! ;-)

          benji

  2. OK, danke Cheatah, danke, die das alle noch nicht gelesen haben: ich hab' das Problem gelöst:

    '<?php.*??>'si

    .... und schon ist jeder PHP-Code "weg vom Fenster" ;-)

    benji

    1. Hi,

      '<?php.*??>'si

      jau :-)

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hi,

        '<?php.*??>'si

        jau :-)

        HAbs mir von einem JavaScript aus String-Entfernen Beispiel von der PHP-Doku abgeschaut und mir selbst zusammengeschnippelt :)

        benji

      2. jau :-)

        J O W und nicht J A U  ;-)

        benji