regex?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regex?

    hi,

    ich will aus einem quelltext alle span-tag mit ihren style-eigenschaften und den jeweiligen texten per regex rausholen.

    aber ich bekomme immer nur einen treffer bei diesem ausdruck :

    Code:
    <span style="(.+?)">(.*?)</span>
    der test-code sieht mal so aus:
    Code:
    <span style="font-weight: bold;">Das</span> ist 
    <span style="text-decoration: underline;">ein</span> 
    kleiner <span style="text-decoration: underline;">Text</span>-Test
    ich bekomm immer nur den ersten treffer statt alle. Was mach ich falsch an dem Ausdruck.
    hier mal noch mein js-script :

    Code:
      regex = RegExp('<span style="(.+?)">(.*?)</span>','gi');
      result = regex.exec(code);
      if (result != null) {
        for (i=0; i<result.length; i++) {
          s = s + result[i] + "\n";
        }
        alert(s);
      }
    Danke....
    Zuletzt geändert von ; 03.07.2006, 14:23.

  • #2
    Ein Blick ins Manual kann Wunder bewirken
    Code:
    regex = RegExp('<span style="(.+?)">(.*?)</span>','gi');
    while (result = regex.exec(code)) {
      s = '';
      if (result != null) {
        for (i=0; i<result.length; i++) {
          s = s + result[i] + "\n";
        }
        alert(s);
      }
    }
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      RegEX - Ich bekomm es nicht gebacken ???

      Hi...

      Also ich beise mir an dem RegExp von JS die Zähne aus. In PHP hätte ich das bestimmt schon längst hinbekommen, aber muss es leider in JS machen.

      Ich will alle Link-Tags :
      Code:
      <a href="http://link1.de">Link1</a>
      in solche Tags umwandeln :
      Code:
      [link url="http://link1.de" name="Link1"]
      Aber Gott verdammt das funktioniert nicht. Der ersetzt zwar alle Treffer, aber nur mit dem ersten Wert.
      Hier mein Code :
      Code:
        regex = RegExp('<a href="(.*?)">(.+?)</a>','gi');
        do {    
          found = false;
          if (regex.exec(code)) {
            found = true;
            temp1 = RegExp.$1;
            temp2 = RegExp.$2;
            code = code.replace(regex,'[link url="'+temp1+'" name="'+temp2+'"]');           
          }
        } while (found != false)
      Ich denke das Problem liegt bei dem Replace, das er alle ersetzt und nicht den der er zuerst gefunden hat.

      So sieht der HTML-Code aus der umgewandelt werden soll :
      Code:
      <a href="http://link1.de">Link1</a> - <a href="http://link2.de">Link2</a>
      Und so sieht das falsche Ergebnis aus. (Link2 wird mit Link1 ersetzt)
      Code:
      [link url="http://link1.de" name="Link1"] - [link url="http://link1.de" name="Link1"]
      Kann mir jemand helfen?
      Zuletzt geändert von ; 04.07.2006, 14:13.

      Kommentar


      • #4
        Du kannst die Denkweise von PHP analog in JS verwenden, also nicht so umständlich bitte:
        Code:
        var test = 'test <a href="nen_erstes_ziel">Erster V</a> test <a href="nen_zweites_ziel">Zwoter V</a>';
        alert (test + "\r\n" + test.replace(/<a href="(.+?)">(.*?)<\/a>/g, '[link url="$1" name="$2"]'));
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          hast recht. danke!

          funktioniert super!

          Kommentar


          • #6
            [JavaScript] Image-Tags heraus filtern

            Hallo, ich möchte alle Image-Tags, per Javascript und Regexp, aus einem String herausfiltern. Bekomme aber nicht den Ausdruck nicht hin.

            Die Treffer sollen den gesamte Image-Tag also : <img src="bild.jpg" alt="bla"> beinhalten.

            Code:
            code='<img src="http://www.google.de/images/logo_sm.gif" height="58" width="158">
            <img src="http://www.regular-expressions.info/img/rxb48.gif" height="62" width="62">';
            
            regex = RegExp('(<img.*>)','gi');
            do {    
                found = false;
                if (regex.exec(code)) {
                  found = true;
                  alert(RegExp.$1);
                }
              } while (found != false)
            Bei diesem Code ist aber der Fehler wenn mehrere Image-Tags vorkommen wird ein Treffer erst nach dem letzten Vorkommenden > erfasst.

            Hat jemand eine Lösung?

            Kommentar


            • #7
              Vermute mal dass das Prob u.U. damit zusammenhängt dass .* auch das gesuchte Endzeichen > matched.
              Ich kenne mich mit JS und RegExp nicht so aus aber in PHP würde ich den RegExp auf ungreedy setzen.
              Probier mal ob das auch funzt:
              Code:
              regex = RegExp('(<img[^>]*>)','gi');
              Eine Parameter um den RegExp ungreedy zu machen habe ich aber auf die Schnelle bei SelfHtml nicht gefunden.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                okay ich hab ähnliches prob - ich will sowas machen

                string = '***Text***';

                das soll nun ersetzt werden mit <h3>text</h3>
                Mein prob - ich krieg den scheiß suchstring net hin. Kann mir
                pls jemand dabei helfen?
                Signatur-Text ...

                Kommentar


                • #9
                  PHP-Code:
                  var code document.formular.inhalt.value;
                  var 
                  regexy code;
                  var 
                  regex RegExp('---(.*?)---',''); 
                      
                  regex.exec(code);
                      
                  temp1 RegExp.$1;
                      
                  regexy code.replace(regex,'<b>'+temp1+'</b>');           
                           
                  document.all.vorschau.innerHTML regexy
                  so iss richtig, oder?
                  prob - die sau macht das nur einma und wenn ichs in ne schleife leg, macht mein browser die hufe hoch ...

                  wie muss ichn die schleife machn, dass er aufhört, wenn das textende erreicht ist? im mom hatte ich ne dauerschleife - nich so der bringer ...
                  Signatur-Text ...

                  Kommentar


                  • #10
                    PHP-Code:
                    $string '***Text***';
                    preg_replace('/\\*{3}(\\w*)\\*{3}/','<h3>\\1</h3>',$string); 
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      siehe drüber *g* ey das geht ja kürzer *lol*
                      und wie prüfe ich, obs mehrfach vorhanden ist?
                      Signatur-Text ...

                      Kommentar


                      • #12
                        PHP-Code:
                        $string '***Text***';
                        preg_replace('/\*{3}(\w*)\*{3}/','<h3>\1</h3>',$string,-1,$anzahl);
                        echo 
                        'Der Suchstring wurde '.$anzahl.' Mal ersetzt'
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          cool - aber bei mir funzt das nich wirklich - gan das sein, dass das php iss?
                          Signatur-Text ...

                          Kommentar


                          • #14
                            Ach Enddarmausscheidung Hab's erst jetzt gesehen, dass das ein JS Thread ist. Sorry

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Code:
                              var t = "***Text***";
                              var nachher = t.replace(/\*{3}(\w*)\*{3}/,'<h3>$1</h3>');
                              document.write(nachher);
                              Sollte funzen...

                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X