Wildcard

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

  • Wildcard

    Hallo,

    ich möchte im nachfolgenden String eine Ersetzung vornehmen, einen variablen Teil aber wieder weitergeben. Was muß an Stelle von (beliebige zeichenfolge) stehen?

    PHP-Code:
    $message str_replace('<a href="http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank" rel="nofollow">'
    '<a href="http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank">'$message); 

    vielen Dank
    Anne


    PS: mir ist klar, daß das nicht besonders lernwillig aussieht - aber verzichtet bitte auf Hinweise wie "RTFM" - ich habe diverse str_replace und preg_replace Manuals bereits gelesen - aber nicht verstanden - deswegen frage ich hier ;-)

  • #2
    Wenn der String nicht immer gleich ist, wirst du um Dinge wie reguläre Ausdrücke nicht herumkommen.
    Welchen Teil willst du ersetzen und welchen Teil behalten?
    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


    • #3
      soviel schon ma.

      da es eine beliebige zeichenfolge sein soll, kommst du mit str_replace hier nicht weiter. du kommst wohl nicht drum rum, dir die geliebten reg_exp anzusehen...

      würd dir sogar mehr helfen, doch genau die sind auch mein steckenpferd und ich muss sie mir immer wieder aufs neue ansehen...


      aber vielleicht hilft der kollege hier

      http://regexp-evaluator.de/evaluator/


      edit: muah, bin ich heute lahm

      edit2:
      spiel hiermit mal rum... sollte zumindest in die richtige richtung gehen



      <?PHP
      //
      // Text, der durchsucht werden soll
      //
      $subject = 'url=http://www.meinforum.de/(beliebige Zeichenfolge)\" target=\"_blank';
      //
      // Der Reguläre Ausdruck
      //
      $pattern = '=url\=http:\/\/www.meinforum.de\/(.*)\" target\=\"_blank=is';
      //
      // RegExp auswerten
      //
      $result = preg_match($pattern, $subject, $subpattern);
      //
      // Ergebnis ausgeben
      //
      echo '<p>Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text '.
      (($result) ? '' : 'nicht ').'zu.</p>';
      //
      // Unterausdrücke ausgeben
      //
      echo '<pre>'.print_r($subpattern, TRUE).'</pre>';
      ?>


      hinweis: habs extra ohne [ p h p ] geschrieben, wegen "escape-problem"
      Zuletzt geändert von arkos; 25.10.2007, 15:41.
      **********
      arkos
      **********

      Kommentar


      • #4
        Danke für eure Antworten - und sorry, wenn ich etwas unpräzise war.

        ach-du-herrjemineh...... so schwierig hatte ich es mir nicht vorgestellt......

        was ich als "(beliebige Zeichenfolge)" bezeichnet habe, sind halt unterschiedliche Dateiaufrufe hinter meinforum.de/***

        Keine Ahnung, ob das jetzt Blödsinn ist - aber kann man nicht einfach das erste "(beliebige Zeichenfolge)" in eine Variable laden und beim Ersetzungsstring "dran-pappen"?



        @jahlives

        Bei mir werden in Beiträgen Links automatisch maskiert - ich möchte aber die internen Links davon ausnehmen. Daher sollen alle Links, die meinen Domainnamen enthalten entsprechend umgewandelt werden, die ausgehenden Links sollen aber so bleiben wie bisher.

        so sehen die Links momentan aus:
        <a href="http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/(Dateiname)" target="_blank" rel="nofollow">

        und wenn sie "meinforum.de" enthalten, sollen sie umgeschrieben werden zu:

        <a href="http://www.meinforum.de/(Dateiname)" target="_blank">


        liebe Grüße
        Anne

        Kommentar


        • #5
          ich konnte es lösen mit:

          PHP-Code:
          $ret preg_replace("#(^|[\n ])((www|ftp)\.meinforum[^ \"\t\n\r<]*)#is""\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"$ret); 
          trotzdem danke für eure Zeit


          LG
          Anne

          Kommentar


          • #6
            ich konnte es lösen mit:

            PHP:
            $ret = preg_replace("#(^|[\n ])((www|ftp).meinforum[^ \"\t\n\r<]*)#is", "\1<a href=\"http://\2\" target=\"_blank\">\2</a>", $ret);



            trotzdem danke für eure Zeit
            Das 'matcht' aber nicht mehr auf den obigen Text und zudem auch auf http://www.meinforum.ist.gar.nicht.m.../?byebye&gruß


            Und mal zu obigem Text..

            wenn aus:
            Code:
            <a href="http://www.meinforum.de/link/link.php?url=http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank">
            das werden soll:
            Code:
            <a href="http://www.meinforum.de/(beliebige Zeichenfolge)" target="_blank">
            Dann stört am Ursprungstext ein STATISCHER TEIL!
            FOLGE:
            PHP-Code:
            str_replace("http://www.meinforum.de/link/link.php?url=http://www.meinforum.de""http://www.meinforum.de"$input); 
            reicht völlig. Das gleiche gilt für rel="nofollow"

            Oder wie oder wat?
            Zuletzt geändert von c0re.ak; 26.10.2007, 07:02.

            Kommentar

            Lädt...
            X