kostenloser Webspace werbefrei: lima-city


mit preg_split code zerlegen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    heavyraptor

    heavyraptor hat kostenlosen Webspace.

    Hihoha,

    wie wohl jedem bekannt ist, kann man mit preg_split einen String zerlegen.
    Es gibt einen sehr praktischen tag/ausdruck">Ausdruck, der einen HTML-Code zerlegen kann: /(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/

    Dieser Ausdruck erkennt auch, dass z.B. ein > in einem String in einem Tag ist, ohne dass dann dort der Tag beendet wird:
    $code = '<html><body class="bla>bla"></body></html>';
    $tokens = preg_split('/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/',$code,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
    print_r($code);
    /* Zeigt etwas an wie
    array(
     0 => <html>
     1 => <body class="bla>bla">
     2 => </body>
     3 => </html>
    ) */


    Das Problem: damit kann man nicht einen Code nach PHP zerlegen. Es k?nnte ja sein, dass ein >= im Code steht, und dadurch wird der Tag beendet.
    Ich wollte jetzt wissen, wie man einen Ausdruck schreiben k?nnte, der auch PHP ber?cksichtigt.
    Ich habe es schon versucht mit /(<\?(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+\?>)/, aber das funktioniert nicht.
    Der Zweck der ganzen Sache ist Syntaxhighlighting.

    K?nnte mir jemand evntl. weiterhelfen?
    W?re nett.

    mfg,
    hr
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Erstmal: Sch?ner RegEx! Irgendwo im SELFFORUM hab ich vor einiger Zeit mal einen gesehen, der HTML-Tags korrekt filterte, eben auch mit dem > in den Attribut-Werten. Ich hab ihn nur nie wieder gefunden.

    W?rdest du das Teil mal bei meiner Source-Code-Liste hochladen? So wie es aussieht, hat das Lima-Board einige Backslashes zu viel eingebaut. Oder kommt mir das nur so vor?

    http://alopex.pyrokar.lima-city.de/srccodelist/

    Zu deinem Problem f?llt mir nicht viel ein, was mit regul?ren Ausdr?cken oder preg_split() zu tun hat. Ich benutze die Tokenizer-Befehle, um PHP-Code von Quelltexten zu trennen. Das Gleich kannst du auch mit den HTML-Bereichen (statt der Quelltexte) machen

    http://de.php.net/manual/de/ref.tokenizer.php

    Das d?rfte wesentlich sicherer in der Erkennung sein, als regul?re Ausdr?cke. Die HTML-Bereiche kannst du ja dann extra mit regul?ren Ausdr?cken bearbeiten, wenn du die auch bunt machen willst. PHP selbst stellt ja die HTML-Bereiche beim Syntax-Highlighting in nur einer Farbe dar.
  4. Autor dieses Themas

    heavyraptor

    heavyraptor hat kostenlosen Webspace.

    Hi,

    ich hab den Code als preg_split_code.php bei dir hochgeladen, aber ich glaube, dass keine zus?tzliche Backslashes eingebaut wurden, die waren schon ok, aber ist ja egal.

    Den PHP Code zu zerlegen w?re schon sehr schwierig, aber ich denke, dass es m?glich w?re. Was ich aber zuerst noch brauche ist einen regex, der nicht nur die HTML-Tags ausliest, sondern auch die PHP-Tags, da /(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/ ja nur nach < sucht und nicht nach <?.

    K?nntest du mir evntl. helfen diesen Ausdruck zu schreiben?
    Es k?nnte ja so irgendwie funktionieren, beim Unterschtrichenen weiss ich nicht wie: /(<\?(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+\?>)/
    Muss man das Fragment [^<>] so schreiben?: [^(<\?|\?>)].

    Danke schonmal f?r die Hilfe.

    mfg,
    hr

    Beitrag ge?ndert am 7.02.2006 20:25 von heavyraptor
  5. 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!