In preg_replace wordwrap ausführen

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

  • In preg_replace wordwrap ausführen

    Hi,

    ich weis das es geht, allerdings leider nicht mehr wie.

    Und zwar möcht ich in nem preg_replace auf ein Suchergebniss wordwrap anwenden. Leider funktioniert das nicht bei mir.

    Hier mein Versuch:
    Code:
    <?
    $nachricht = "jhhhhhv,
    bhbhkbh
    http://flashhilfe.de/go/forum/lesen&forum=forumanfaenger"
    ."&seite2=0&part=000&weiter=0&start=37876&id=37876"
    ."&PHPSESSID=8483eb9fd58a9575b1a9adb9a6f168ba#37876 ";
    
    $nachricht=str_replace("{auf}", "", $nachricht);
    $nachricht=str_replace("{zu}", "", $nachricht);
    $nachricht=preg_replace(
      "/(http:\/\/[-@\w.\/?=&%+~#]*[\w\/])/i",
      "{auf}a href='\\1' target='_blank'{zu}"
        . wordwrap('\\1',10). "{auf}/a{zu}",
      $nachricht
    ); 
    $nachricht=htmlspecialchars($nachricht);
    $nachricht=str_replace("{auf}", "<", $nachricht);
    $nachricht=str_replace("{zu}", ">", $nachricht);
    $nachricht=nl2br($nachricht);
    
    echo $nachricht;
    ?>
    Ich glaub das liegt nur am modifier bin mir aber nicht sicher.

    Nachtrag:
    Das <a href=""> kommt von diesem Forum hier.
    Hab jetzt noch das Syntaxhighlight für PHP raus gemacht da die Ausgabe verfälscht wurde.
    Zuletzt geändert von Titus; 01.04.2003, 16:46.
    Grüsse,
    Sebastian


    Profil Flex Freelancer
    Twitter twitter.com/flashhilfe
    Web Flash und Flex Community

  • #2
    Hab jetzt doch was gefunden. Es soll mit e für eval funktionieren.

    Leider bekomm ich folgende Fehlermeldung:
    Parse error: parse error in /var/pfad/test.php4(8) : regexp code on line 1

    Fatal error: Failed evaluating code: {auf}a


    Mein Script sieht so aus:
    Code:
    <?
    $nachricht = "jhhhhhv,
    bhbhkbh
    http://flashhilfe.de/go/forum/lesen&forum=forumanfaenger"
    ."&seite2=0&part=000&weiter=0&start=37876&id=37876&"
    ."PHPSESSID=8483eb9fd58a9575b1a9adb9a6f168ba#37876 ";
    
    $nachricht=str_replace("{auf}", "", $nachricht);
    $nachricht=str_replace("{zu}", "", $nachricht);
    $nachricht=preg_replace(
      "/(http:\/\/[-@\w.\/?=&%+~#]*[\w\/])/ei",
      "{auf}a href='\\1' target='_blank'{zu}"
        . wordwrap('\\1',10). "{auf}/a{zu}",
      $nachricht
    );
    $nachricht=htmlspecialchars($nachricht);
    $nachricht=str_replace("{auf}", "<", $nachricht);
    $nachricht=str_replace("{zu}", ">", $nachricht);
    $nachricht=nl2br($nachricht);
    
    echo $nachricht;
    ?>
    Jemand ne Idee?
    Zuletzt geändert von Titus; 01.04.2003, 16:46.
    Grüsse,
    Sebastian


    Profil Flex Freelancer
    Twitter twitter.com/flashhilfe
    Web Flash und Flex Community

    Kommentar


    • #3
      1. Such mal im Forum nach einem zuverlässigen Ausdruck für href-Erkennung. Da gibt es einige; bei den Code-Schnipseln solltest du fündig werden.


      2. Als Platzhalter für die Teil-Matches wird im PHP-Handbuch $1, $2 etc. empfohlen; das erspart die Überlegung, wieviele \\\ gebraucht werden.
      3. Der zweite Parameter muss eine gültige PHP right hand expression sein, also z.B.
      '\'{auf}a href="$1" target="_blank"{zu}"\'.wordwrap(\'$1\',10).\'{auf}/a{zu}\''

      4. Gewöhn dir bitte an, bei [code] und [php] in regelmäßigen Abständen Zeilenumbrüche einzufügen; sonst wird die Seite so breit und man muss ständig seitwärts scrollen.
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        >> Gewöhn dir bitte an, bei [code] und [php] in regelmäßigen Abständen Zeilenumbrüche
        Ok.

        Suche im Code-Schnippsel Forum nach:
        href-Erkennung -> 0 Treffer
        href Erkennung -> 0 Treffer
        url Erkennung -> 0 Treffer
        preg_replace -> 1 Treffer: http://www.php-resource.de/forum/sho...ht=pregreplace
        Doch da wird leider auch kein Umbruch im Link gemacht.

        Teilweise hab ich auch alle Foren duchsucht...

        >> {auf}a href="$1" target="_blank"{zu}"'.wordwrap('$1',10).'{auf}/a{zu}''

        Wo ist der Unterschied zu meinem? Das da mal nen \ fehlt liegt am [ PHP ].
        $nachricht=preg_replace("/(http:\/\/[-@\w.\/?=&%+~#]*[\w\/])/ei",'{auf}a href="\\1" target="_blank"{zu}'.wordwrap("\\1",10).'{auf}/a{zu}', $nachricht);

        Mit $1 hatte ich es vorhin schon getestet. Das macht keinen Unterschied. Das Script funktioniert ja auch so lang ich das e draußen lasse. <- bzw. wordwrap geht nie

        Noch ne Idee?
        Grüsse,
        Sebastian


        Profil Flex Freelancer
        Twitter twitter.com/flashhilfe
        Web Flash und Flex Community

        Kommentar


        • #5
          hng ... das Forum hat auch meine Backslashes verschluckt.

          Noch ein Versuch:
          '\\'{auf}a href="$1" target="_blank"{zu}"\\'.wordwrap('$1',10).\\'{auf}/a{zu}\\''
          Also in der Vorschau funktioniert´s jetzt ... (editund das Endergebnis stimmt auch.

          andere Möglichkeit: du baust dir eine eigene Funktion, die nur den Match als Parameter übernimmt und baust da alles rein, was du an Ersetzung brauchst:[php]function mywrap($url)
          {
          return '{auf}a href="'. $url. '" target="_blank"{zu}'
          . wordwrap($url, 10). '{auf}/a{zu}';
          }
          ...
          $nachricht = preg_replace('/.../ei', 'mywrap("$1")', $nachricht);
          ...
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            ûnd hier gibt´s den Ausdruck: http://www.php-resource.de/forum/sho...?threadid=2743
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Ah wunderbar. Danke!
              Der Tipp mit der eigenen Funktion war die Lösung:
              ----------------------------------------------

              $nachricht = "jhhhhhv,
              bhbhkbh
              http://flashhilfe.de/go/forum/lesen&...a6f168ba#37876 ";

              function mywrap($url)
              {
              return "{auf}a href='".$url."' target='_blank'{zu}".wordwrap($url, 40,"\n",1)."{auf}/a{zu}";
              }

              $nachricht=str_replace("{auf}", "", $nachricht);
              $nachricht=str_replace("{zu}", "", $nachricht);
              $nachricht=preg_replace("/(http:\/\/[-@\w.\/?=&%+~#]*[\w\/])/ei",'mywrap("$1")', $nachricht);
              $nachricht=htmlspecialchars($nachricht);
              $nachricht=str_replace("{auf}", "<", $nachricht);
              $nachricht=str_replace("{zu}", ">", $nachricht);
              $nachricht=nl2br($nachricht);

              echo $nachricht;

              ----------------------------------------------
              ... ich poste beabsichtigt ohne [ PHP ] oder [ CODE ]
              Grüsse,
              Sebastian


              Profil Flex Freelancer
              Twitter twitter.com/flashhilfe
              Web Flash und Flex Community

              Kommentar

              Lädt...
              X