preg_match und string auslassen

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

  • preg_match und string auslassen

    PHP-Code:
    while(preg_match("/(.*)<([a-z]+) (.*?)\balign=\"(.*?)\"(.*?)>(.*)/is",$text,$t)){
      
    $text $t['1']."<".$t['2']." ".$this->style_implode("text-align",$t['4'],$t['3'].$t['5']).">".$t['6'];

    Ich möchte alle Tags mit "align" bearbeiten außer den Tag "img" der soll
    übersprungen werden.

    Mein Problem ist das ich nicht weiß wie ich das in dem preg_match Befehl mit einbauen soll?

    Danke schon mal an die die mir helfen können.

  • #2
    guck mal in unserem tut, da steht auch drin, wie man etwas ausschließt.

    Kommentar


    • #3
      Ich habe mir schon alle möglichen tuts angesehen bevor ich hier meine
      Frage gestellt habe.
      Mir ist aber immer noch nicht klar wie ich es lösen kann.

      Ich währe für eine Hilfestellung an meinem Code sehr dankbar.

      Kommentar


      • #4
        Ich kann aber keinerlei ansätze sehen. bis jetzt ist das nicht mehr als ne "Projekthilfe"...

        Kommentar


        • #5
          Ich weiß auch nicht wie ich ansetzten soll!!!
          Bis jetzt habe ich so etwas aber da gibt er mir auch noch alles inkl:img
          PHP-Code:
          while(preg_match("/(.*)<((?<!img)[a-z]+) (.*?)\balign=\"(.*?)\"(.*?)>(.*)/is",$text,$t)){
           
          $text $t['1']."<".$t['2']." ".$this->style_implode("text-align",$t['4'],$t['3'].$t['5']).">".$t['6'];

          Kommentar


          • #6
            Das kann doch nicht unmöglich sein!

            Es muß doch sowas wie eine if Anweisung geben.

            HILFE

            Kommentar


            • #7
              es soll vorkommen, das man auch noch was anderes macht, als hier rumzugeistern. aber kein grund zu drängeln. das bewirkt das gegenteil!

              Kommentar


              • #8
                Ich wollte nicht drängeln. Entschultigung!

                Aber ich dachte ein Forum sei dazu da sich gegenseitig zu helfen.
                Noch dazu wenn man weiß wie es geht.

                Bisher habe ich mir meine Probleme aus den Forum Beiträgen beantwortet
                doch diesesmal habe ich eine konkrete Frage auf die ich keine Antwort weiß.

                Und ich nehme mal an das du TobiaZ die Antwort auf mein Problem hast.

                Ich beschäftige mich seit zwei Jahren mit PHP aber es gibt halt immer noch Sachen die ich nicht weiß und das wird wohl auch so bleiben.

                Der eine weiß das, ein anderer weiß jenes und in einem Forum kann man sich prima ergänzen und von einander lernen.

                Kommentar


                • #9
                  hmm,

                  du suchst also praktisch nach allen align= innerhalb von <>, vor denen nicht img steht?

                  das könnte dahingehend problematisch werden,
                  The contents of a lookbehind assertion are restricted such that all the strings it matches must have a fixed length.
                  ... es gibt aber sicher auch nen regexp, den man dort basteln könnte

                  aber, da du das eh in einer schleife durchläufst, mach doch, falls du auf einen img-tag triffst, einfach ein continue ... sollte wohl die einfachste lösung sein ...

                  edit: vergiss, was dort steht ...
                  Code:
                  #<(?!img).*align="(left|right|center|justify)">#isU
                  scheint zu passen, wenn nicht, poste bitte beispiele ... den rest must du halt noch reinbauen ...

                  http://pcre.nophia.de/evaluate/768dc...dex.php#output
                  Zuletzt geändert von derHund; 12.10.2004, 00:50.
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    PHP-Code:
                    while(preg_match("/(.*)<([a-z]+)(.*?)\balign=\"(left|right|center|justify)\"(.*?)>(.*)/is",$text,$t)){
                     if (
                    $t['2'] == "img"){
                      continue;
                     }
                     
                    $text $t['1']."<".$t['2']." ".$this->style_implode("text-align",$t['4'],$t['3'].$t['5']).">".$t['6'];

                    Habe es so ausprobiert ich denke mal das es so gemeint war.
                    Doch leider bleibt er in einer Endlosschleife hängen weil preg_match immer wieder alle Tags mit "align" findet.

                    Gibt es eine möglichkeit preg_match zu sagen das er es überspringen soll?

                    Danke schon mal für die Hilfe!

                    Kommentar


                    • #11
                      Gibt es eine möglichkeit preg_match zu sagen das er es überspringen soll?
                      siehe mein edit! nimm preg_match_all und den regexp und gut!
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar

                      Lädt...
                      X