luckSpray: php-code mit PCRE finden

Ich kenne mich mit PCRE's gar nicht aus und habe auch keine Geduld mich näher damit zu befassen.

Ich brauche aber 2 PCRE Ausdrücke und ich denke hier werden sicher ein paar Leute sein die das ohne gross nachzudenken hinkriegen.

Der erste PCRE soll einfach alles zwischen den php-Klammern (inklusive Klammern) <?php ?> finden, undzwar einmal. Ich habe es mit dem Ausdruck versucht /<?php(.|\s)*?>/ funktioniert aber nicht.

Der zweite PCRE soll einen Unix Timestamp finden. Ich habe bisher /\d{10}/ benutzt jedoch gelten dann auch solche Konstellationen als richtig (:123bla456bla789bla0 <== eindeutig kein Timestamp *g*)

Danke und lG
luckSpray

  1. echo $begrüßung;

    Der erste PCRE soll einfach alles zwischen den php-Klammern (inklusive Klammern) <?php ?> finden, undzwar einmal. Ich habe es mit dem Ausdruck versucht /<?php(.|\s)*?>/ funktioniert aber nicht.

    Willst du PHP-Code unschädlich machen? Was ist, wenn man dann <script language=php>echo 'Ätsch!';</script> eingibt?

    echo "$verabschiedung $name";

    1. Willst du PHP-Code unschädlich machen? Was ist, wenn man dann <script language=php>echo 'Ätsch!';</script> eingibt?

      Der php-code soll nicht unschädlich gemacht werden sondern innerhalb einer Datei gefunden werden und in einem string abgespeichert werden um ihn an einer andern Stelle wieder einzufügen.

      Was ist, wenn man dann <script language=php>echo 'Ätsch!';</script> eingibt?

      Das werde ich aber nicht eingeben! ^_^

      Die ganze sache soll auf einen Blog hinaus:

      PHP CODE (als header)
      ---
      hier wird neuer content reingeschrieben per php
      ---
      alter content

      Und der header soll immer am Anfang der Datei sein deswegen muss ich ihn mit einem PCRE finden.

      1. Huhu

        Der php-code soll nicht unschädlich gemacht werden sondern innerhalb einer Datei gefunden werden und in einem string abgespeichert werden um ihn an einer andern Stelle wieder einzufügen.

        Dafür kannst Du auch gut den Tokenizer benutzen
        http://de3.php.net/manual/en/ref.tokenizer.php

        Damit kannst Du HTML und PHP Bereiche ganz einfach über die Token T_OPEN_TAG und T_CLOSE_TAG identifizieren.

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
  2. gudn tach!

    Ich kenne mich mit PCRE's gar nicht aus und habe auch keine Geduld mich näher damit zu befassen.

    solche aussagen werden hier im selfforum gar nicht gern gelesen. ;-)
                                   ^^^^

    Ich brauche aber 2 PCRE Ausdrücke und ich denke hier werden sicher ein paar Leute sein die das ohne gross nachzudenken hinkriegen.

    bestimmt. aber ein sinn des selfforums ist es afaik, dass ein fragesteller eine frage bloss ein mal stellt und die antwort _versteht_, also nicht kurze zeit spaeter wieder auftaucht und eine analoge frage stellt (die er, wenn er die erste antwort nachvollzogen und verstanden haette, sich auch selbst haette beantworten koennen) oder einfach bloss schreibt "das geht aber nicht!". ;-)
    soll keine unterstellung sein, aber dein einleitender satz liess mit sicherheit einige leute vermuten, dass man bei dir mit sowas rechnen koenne, was wahrscheinlich auch der grund fuer die bisherige nicht-hilfreich-bewertung sein wird.

    Der erste PCRE soll einfach alles zwischen den php-Klammern (inklusive Klammern) <?php ?> finden, undzwar einmal. Ich habe es mit dem Ausdruck versucht /<?php(.|\s)*?>/ funktioniert aber nicht.

    was genau heisst "funktioniert nicht"? findet der ausdruck zuviel oder zuwenig? was stimmt noch nicht?

    der tokenizer wurde schon von lulu genannt. du braeuchtest dann gar keine regulaeren ausdruecke mehr verwenden.
    fuer deinen fall liesse sich so ein tokenizer auch schnell selbst basteln und zwar via explode().
    sieht dann z.b. ungefaehr so aus.

    Der zweite PCRE soll einen Unix Timestamp finden. Ich habe bisher /\d{10}/ benutzt jedoch gelten dann auch solche Konstellationen als richtig (:123bla456bla789bla0 <== eindeutig kein Timestamp *g*)

    \d{10} ist das gleiche wie [0-9]{10}, deswegen denke ich, du hast dich vertan.

    prost
    seth