Link per preg_replace entfernen

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

  • Link per preg_replace entfernen

    Hi!

    Ich habe folgenden code, um Links aus meinem Text zu entfernen:
    PHP-Code:
    $str preg_replace("/<a href=\"(.*)\">/i"""$produktbeschreibung); 
    Aus:
    PHP-Code:
    <li><b>Darsteller:</b>
    <
    a href="url1">Samuel LJackson</a>,&nbsp;<a href="url2">John Heard</a>
    <
    li><b>Regie:</b>
    <
    a href="url3">Kevin Reynolds</a
    Wird aber leider:
    PHP-Code:
    <li><b>Darsteller:</b>
    John Heard</a>
    <
    li><b>Regie:</b>
    Kevin Reynolds</a
    anstelle von:
    PHP-Code:
    <li><b>Darsteller:</b>
    Samuel LJackson,&nbsp;John Heard</a>
    <
    li><b>Regie:</b>
    Kevin Reynolds</a
    Es wird also anscheinend nicht jeder Link einzeln ersetzt, sondern im Fall der Darsteller alles, vom Beginn des ersten Links bis zum Ende des zweiten Links.

    Das Manual hilft mir irgendwie nicht weiter, da habe ich schon nachgesehen.

    Die </a> würde ich per str_replace "löschen"...

    Wer kann mir den Fehler in meiner Codezeile sagen und mir diese ggf. sogar so anpassen, dass das "</a> auch gleich mit rausfliegt?

    Vielen Dank,
    Gerti
    EDIT:
    Was wird wohl mit url1, url2 und url3 gemeint sein? (mrhappiness)
    Zuletzt geändert von mrhappiness; 03.01.2005, 12:19.

  • #2
    Re: Link per preg_replace entfernen

    Original geschrieben von Gerti
    Es wird also anscheinend nicht jeder Link einzeln ersetzt, sondern im Fall der Darsteller alles, vom Beginn des ersten Links bis zum Ende des zweiten Links.

    Das Manual hilft mir irgendwie nicht weiter, da habe ich schon nachgesehen.
    schau nochmal nach
    http://de2.php.net/manual/de/referen....modifiers.php und
    http://de2.php.net/manual/de/referen...ern.syntax.php (Single-character quantifiers)

    Die </a> würde ich per str_replace "löschen"...
    ich nicht, ersetze doch einfach <a href="xyz">hallo</a> durch hallo
    http://de2.php.net/manual/de/function.preg-replace.php (Rückreferenzierungen)

    EDIT:
    Und bitte sorg dafür, dass ich nicht nach rechts scrollen muss, sonst mach ich das
    Zuletzt geändert von mrhappiness; 03.01.2005, 10:31.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Alternativ könntest Du auch strip_tags verwenden, siehe da -> http://de2.php.net/manual/en/function.strip-tags.php

      Kommentar


      • #4
        Ich würd ja einfach PCRE_UNGREEDY zu Hilfe nehmen.
        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


        • #5
          Hi!

          Das "scrollen" kommt leider durch die langn Tags...ich wollte diese nicht umbrechen, denn dadurch würden diese ja auch für die Verarbeitung anders gehandhabt.

          Ich habe es jetzt so gelöst, dass ich vor jedes "<a href" einen Zeilenumbruch eingefügt habe, damit das Ersetzen klappt...
          Leider hat mir aber niemand beantwortet, warum es nicht klappt (oder wie man es hätte machen müssen), wenn zwei Links in einer Zeile sind...

          Gruß und trotzdem Danke,
          Gerti

          Kommentar


          • #6
            Original geschrieben von Gerti
            Leider hat mir aber niemand beantwortet, warum es nicht klappt (oder wie man es hätte machen müssen), wenn zwei Links in einer Zeile sind...
            doch

            sowohl titus als auch ich haben dich ans manual verwiesen, wo das richtig toll erklärt wird

            und deinen beitrag habe ich mal editiert, oder traust du uns soviel abstraktionsvermögen nicht zu?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hi!

              Mit zutrauen hat das nichts zu tun...
              Nur wenn Umbrüche drin sind, tritt das Problem ja nicht auf, was die ganze Fragestellung überflüssig gemacht hätte. Außerdem hätte es ja auch am "%" im Link gelegen haben können...mir war die Ursache ja nicht bekannt.

              Die Manuals habe ich mir durchgelesen...trotzdem finde ich dort nichts davon, warum das in einer Zeile nicht geht...

              ...aber trotzdem vielen Dank, dass ich trotz der Anmerkung, dass ich das dort nicht gefunden habe und deshalb danach frage, wieder von allen nur auf das Manual verwiesen werde...das hat mir wirklich sehr geholfen!

              Gruß,
              Gerti

              Kommentar


              • #8
                Ach Gerti ... du hast 2 Mal den Hinweis auf den GREEDYNESS Modifier bekommen ... übersetzt Dir Greedy ... und schau' ins Manual ... vorgekaut:

                preg_replace("/<a href=\"(.*)\">(.*)</a>/iU", "$2", $produktbeschreibung)

                sollte in die richtige Richtung gehen ... !

                Du bist lang' genug dabei um mit solchen Hinweisen klar zu kommen ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Hi!

                  Das hier steht unter Greedy im Manual:

                  U (PCRE_UNGREEDY)
                  Dieser Modifikator kehrt die Gier von Quantifikatoren um, sodass sie standardmäßig nicht gierig sind, aber gierig werden, wenn ihnen ein "?" folgt. Das ist nicht mit Perl kompatibel. Es kann auch innerhalb des Suchmusters mit dem Modifikator (?U) gesetzt werden.
                  ...und daraus soll ich ernsthaft erkennen können, dass ich damit zwei Links in einer Zeile ersetzen kann?

                  Gruß,
                  Gerti

                  Kommentar


                  • #10
                    Ja klar ... weil genau das Dein Problem war ... der Punkt (in Deinem Fall (.*)) passt auf jedes Zeichen mit Ausnahme der Zeilenschaltung (siehe Doku.) ... und weil preg_XXXX per default Greedy (also gierig) ist findet es die letzte für Dein Pattern das letzte \"> in der Zeile ... mit U (Ungreedy) wird das erste oder genauer das nächste auftreten des \"> patters gefunden ... mal ganz simpel ausgedrückt ...Dein nächstes Problem könnten bei meine Pattern nun Linktexte mit einer vorhandenen Zeilenschaltung sein ... aber das kommt erst im nächsten Kapitel ... !

                    Wie gesagt ... Dokumentation ... Lust am Problemlösen ... und etwas Hirnschmalz ... das ist alles ... !
                    Zuletzt geändert von goth; 03.01.2005, 13:34.
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Hi!

                      Vielen Dank für diesen wirklich sinnvollen Hinweis...

                      Jetzt habe ich es verstanden...aber mal im Ernst, die Beschreibung im Manual klingt nach "Übersetzungsprogramme laufen Amok"...

                      Wenn man nicht weiß, was es bedeuten soll, kann man das nicht daraus erkennen...

                      Gruß und Danke,
                      Gerti

                      Kommentar


                      • #12
                        Klar ... deshalb verwende ich auch nur englische Manuals ... und im Zweifel noch http://dict.tu-chemnitz.de/ ...
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Magst du LEO nicht, oder kennst du LEO nicht?

                          http://dict.leo.org

                          Ich hab noch nie n anderes Online-Wörterbuch gebraucht.
                          hopka.net!

                          Kommentar


                          • #14
                            Original geschrieben von Hopka
                            Magst du LEO nicht, oder kennst du LEO nicht?

                            http://dict.leo.org

                            Ich hab noch nie n anderes Online-Wörterbuch gebraucht.
                            Das ist u.A. das mir einzige bekannte kostenlose Online-Wörterbuch wo man sich die Wörter sogar vorlesen lassen kann
                            [color=blue]MfG Payne_of_Death[/color]

                            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                            [color=red]Merke:[/color]
                            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                            Murphy`s Importanst LAWS
                            Jede Lösung bringt nur neue Probleme
                            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                            Kommentar


                            • #15
                              ach ja ... für den Fall, dass zwischen <a> und </a> Zeilenumbrüche enthalten sind, sollte noch der Modifier PCRE_DOTALL benutzt werden!
                              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

                              Lädt...
                              X