kleines Problem mit den regulären Ausdrücken

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

  • kleines Problem mit den regulären Ausdrücken

    Ich versuche mittels ereg einen Ausdrück zu erkennen.

    Ausdruck
    PHP-Code:
    $f_test "[link=http://www.xyz.de?test=bl-ub__gg.html]"
    Die If'fe
    PHP-Code:
    if(ereg("([/|[)([a-zA-Z]{1,10})(=)?(a-zA-Z0-9.:-\/_=?)*(])",$f_test,$f_ereg)) 
    in $f_ereg soll dann die URL stehen.

    Wäre super wenn mir da jmd weiter helfen kann.
    Noch ein Hinweis, er sollte zwischen '=' und ']' möglichst jede gültige URL erkennen. es darf aber kein '[' oder ']' der Inhalt sein.
    Zuletzt geändert von ; 18.11.2004, 21:27.

  • #2
    hast du unser tutorial schon durchgelesen?

    ich verstehe nicht so recht, warum du z.b. die [ nicht escapest, oder kurz vor ende ne klammer öffnest, die du nicht schliest.

    nimm mal preg_match, geht schneller-

    Kommentar


    • #3
      ich habs schon hin bekommen

      Kommentar


      • #4
        Lösung für die anderen User wäre nett.

        Kommentar


        • #5
          Lösung...

          Habe mir mal die Mühe gemacht und ne RegExp gebastelt...
          Keine Ahnung, ob sie funktioniert, konnte nicht testen!

          EDIT:

          <?php

          function replace_uri($str)
          {
          $pattern = '#(^|[^\"=]{1})(\[link=)(http://|ftp://|mailto:|news([^\s<>\]\[]+)(\])([\s\n<>]|$)#sm';
          return preg_replace($pattern," \\3\\4",$str);
          }

          $str = "Hallo, das ist ein Link: [link=http://www.xyz.de?test=bl-ub__gg.html]";
          echo replace_uri($str);

          ?>

          Zuletzt geändert von silv3r; 19.11.2004, 15:19.
          Backbone-Systems4u

          E-Mail: info@bbs4u.de

          Kommentar


          • #6
            Die Funktion soll nicht nur Links erkennen sondern vor allem Psydo Code, wie eben hier in diesem Forum.

            Ich hab das ersetzen und suchen in eine Funktion intigirert.

            PHP-Code:
            function stringout($f_string)
            {
             while(
            ereg("(\[\/|\[)([a-zA-Z]{1,10})(=?)([a-zA-Z0-9.:\/_=?-]*)(])",$f_string,$f_ereg))
             {
              
            $f_sel_q mysql_query("SELECT * FROM tag");
              
            $f_nige true//nicht gefunden

              
            while($f_sel mysql_fetch_array($f_sel_q))
              {
               if(
            $f_sel['code'] == strtolower($f_ereg[2]))
               {
                
            $f_nige false;

                if(
            $f_ereg[4]=="")
                {
                 if(
            substr($f_ereg[1],1) == "/")
                  
            $f_string ereg_replace("(\[\/{1})($f_ereg[2])(])","</".$f_sel['tag'].">",$f_string);
                 else
                  
            $f_string ereg_replace("(\[{1})($f_ereg[2])(])","<".$f_sel['tag'].">",$f_string);
                }
                else
                {
                 
            $f_string ereg_replace("(\[{1})($f_ereg[2])(=?)($f_ereg[4])(])","<".$f_sel['tag']." ".$f_sel['param']."=\"".$f_ereg[4]."\" class=\"link\">",$f_string);
                }
               }
              }
              if(
            $f_nige//löscht unbekannten Code
               
            $f_string ereg_replace("(\[\/|\[)($f_ereg[2])(=?)($f_ereg[4])(])","",$f_string);
             }

             while(
            ereg("(<a href=\".*\">)(</a>)",$f_string))
             {
              
            $f_string ereg_replace("(<a href=\".*\">)(</a>)","\\1Link\\2",$f_string);
             }
             
            $f_string nl2br($f_string);
             return 
            $f_string;

            Die Funktion ist mehr oder minder spezifisch auf meine Probleme zugeschnitten, aber teorethisch lässt sich jeder x-belibige Code erkennen und ersetzen.

            Ich muss aber noch <span>-Tags mit style Atributen integrieren, denn wer verewendet heute noch <b> als Tag?

            Kommentar


            • #7
              warum nutzt du nicht preg?

              Kommentar


              • #8
                keine Ahnung, wo is der Unterschied?

                Kommentar


                • #9
                  ist schneller, besser, schöner

                  Kommentar


                  • #10
                    kannst du das näher beschreiben?
                    Mal ne andere Frage, kann es sein das SelfPHP seit Jahren nicht aktualisiert wurden?

                    Kommentar


                    • #11
                      wozu gibt es das offizielle Manual??

                      Kommentar


                      • #12
                        He, tut mir leid ich weis auch nich alles.

                        Aber wenn du schon diese Behauptung aufstellst, dachte ich das du es Begründen kannst. Naja ich schau mal nach.

                        Kommentar


                        • #13
                          Aus dem Manual: Anmerkung: Die Funktion preg_match(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg().

                          Kommentar


                          • #14
                            okay okay

                            danke für den tipp


                            Gut geht blos nicht mit preg_match...

                            Kommentar


                            • #15
                              die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet

                              Kommentar

                              Lädt...
                              X