Re: RegExp Problem - bekomms selbst nicht hin.... - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 4.April.2007, 17:31.
    RegExp Problem - bekomms selbst nicht hin....

      Nachdem nun ein Tag mit Trial und Error und Recherche ohne Ergebnis ins Land gegangen ist, bitte ich doch mal um Hilfe der Profis.
      Ich möchte irgendwie die Sonderzeichen bzw. Reservierten Zeichen für Reguläre Expressions in einem in einer Variable stehenden String maskieren. Das muss aber zwingend "elektrisch" erfolgen, weil der String immer unterschiedlich sein kann weil er zur Laufzeit erst generiert wird.
      Der String kann bspw. so aussehen:
       __mod_zeigsperrmuell?zeig=falsch__
      
      Es müssen da dann alle regex-relevanten Zeichen maskiert werden, weil der String selbst durch definierten HTML-Text mittels einer RegExp ersetzt werden soll.
      Also so in etwa:
      ---schnipp
      ...
      $ersetzung = " __mod_zeigsperrmuell?zeig=falsch__"; # dies wird aber dynamisch gebaut, es können alle alphanumerischen Zeichen sowie "-", "?", ".", "_", "$", "&", "@", und "*" da drin sein, vielleicht hab ich ja auch noch welche vergessen...
      my $ersetzung = "__".$include."__";
      my $modul_htm = $$include;
      $htm_mitte = $s_hcontent if $htm_mitte eq "";
      $htm_mitte =~ s/$ersetzung/$modul_htm/gi;
      
      ....
      ----schnapp
      Wobei in $s_hcontent alles was man mit der Computertastatur hacken kann drin stehen kann, u.U. könnten sogar Binärinhalte drin sein (es ist also eine bp-DB-Feldvariable ;-) )

      Gibts da eventuell nen Trick oder muss der String tatsächlich zerhackt und alle relevanten "scharfen" Zeichen einzeln maskiert werden?
      Danke für Tipps
      Ruben

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 4.April.2007, 18:19.
    Re: RegExp Problem - bekomms selbst nicht hin....

      Wenn du sowieso kein Regex brauchst dann benutze es besser nicht:

      $htm_mitte = substr($htm_mitte,index($htm_mitte,$ersetzung),length($ersetzung),$modul_htm);
      

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 4.April.2007, 18:36.
    Re: RegExp Problem - bekomms selbst nicht hin....

      hmm ne quatsch nur:

       substr($htm_mitte,index($htm_mitte,$ersetzung),length($ersetzung),$modul_htm);
      

      sonnst weisst man $htm_mitte die ersetze Zeichenkette zu ($ersetzung);

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 4.April.2007, 19:01.
    Re: RegExp Problem - bekomms selbst nicht hin....

      Danke erst mal Pouraga, aber das hilft leider nicht weiter...
      Es muss zwingend mittels regex erfolgen.
      Habs mit ner Sub gelöst, die die Sonderzeichen ersetzt, warum ein "$" und ein "\" nicht geht, weiss ich nicht, aber ist für den Anwendungsfall auch egal.
      ---schnipp
       sub clean_regex {
       my $t = shift;
       $t =~ s/\./\\./g;
       $t =~ s/\+/\\+/g;
       $t =~ s/\*/\\*/g;
       $t =~ s/\?/\\?/g;
       $t =~ s/\^/\\^/g;
       #$t =~ s/\$/\\$/g;
       $t =~ s/\|/\\|/g;
       #$t =~ s/\\/\\\/g;
       $t =~ s/\{/\\{/g;
       $t =~ s/\}/\\}/g;
       $t =~ s/\[/\\[/g;
       $t =~ s/\]/\\]/g;
       $t =~ s/\(/\\(/g;
       $t =~ s/\)/\\)/g;
       return $t;
      }
      ...
       $ersetzung = &clean_regex($ersetzung);  $htm_mitte =~ s/$ersetzung/$modul_htm/gie;
      ---schnapp
      Nur mal so, falls das noch jemand braucht, hier mit reingestellt

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 5.April.2007, 01:00.
    Re: RegExp Problem - bekomms selbst nicht hin....

      Wenn dann so:

      $ersetzung = s/(\W)/\\$1/g;
      $htm_mitte =~ s/$ersetzung/$modul_htm/gie;
      

      aber besser gleich so:

      $ersetzung = quotemeta($ersetzung);
      $htm_mitte =~ s/$ersetzung/$modul_htm/gie;
      

      ;-)

      Und: Sicher dass Du das "e" hinten willst? Das führt nämlich die Ersetzung als Perl-Code aus, Du willst aber den "String durch definierten HTML-Text" ersetzen:

      $ersetzung = quotemeta($ersetzung);
      $htm_mitte =~ s/$ersetzung/$modul_htm/gi;
      

      sollte also funktionieren (und ist sicherer, wer weiss was da in $modul_htm drin stehen kann...)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 6.April.2007, 21:26.
    Re: RegExp Problem - bekomms selbst nicht hin....

      Hey, danke - grrrmpf - wenn man weiss, was man suchen soll, dann ist selfhtml echt eine absolute Sache...
      nun ja, mit dem "e" wird gebraucht, weil da auch vorhandener Perl-Code ausgeführt werden soll (hab ich bis jetzt noch nicht getestet, ich hoffe, dass das dann bei Notwendigkeit auch so funktioniert, wie ich das mir vorgestellt habe ;-) )
      Aber wie immer (hätte mich auch sehr gewundert, wenn es nicht so wäre) bringt Perl die Funktion gleich selbst mit.
      Gibts eigentlich sone Art Wissesdatenbank für Perl, wo man nach Sinnzusammenhängen oder Fragen sinnvolle Ergebnisse bekommt - so in der Art wie bei Google?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 9.April.2007, 11:12.
    Re: RegExp Problem - bekomms selbst nicht hin....

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 5.April.2007, 00:59.
    Re: RegExp Problem - bekomms selbst nicht hin....

     Antworten


     
 Liste der Einträge von 14100 bis 14250:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!