die richtige schleife() ?!?

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

  • #16
    ich will ja nicht nerven, aber es ist das selbe ergebnis ....
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #17
      ich glaub ich hab nen neuen Lieblingsfehler oder ich sollte mal wieder mehr schlafen...
      es is schon wieder die falsche reihenfolge bei str_replace
      mach hieraus
      $text_stueck[$i] = str_replace ($ersetzen_durch,"
      HTML-Code:
      ".$ersetzen."
      ",$text_stueck[$i]);
      mal
      $text_stueck[$i] = str_replace ("
      HTML-Code:
      ".$ersetzen."
      ",$ersetzen_durch,$text_stueck[$i]);
      Of all things I've lost
      I miss my mind the most

      Kommentar


      • #18
        ähhhhm nö ich komme mir langsam vor wie zu meinen blutigen anfänger tagen ....

        hier mal der aktuelle code für alle anderen:
        Code:
        <?php
        $text = "hallo
                 <hr color='#0000FF'>
        		 [html]<hr>[/html] 
        		 hallo 2
        		 <hr color='#0000FF'>
        		 [html]
        		 <b>text</b>
        		 [/html]";
        
        $text_stueck = explode ("[html]",$text); 
        $anzahl = count ($text_stueck); 
        $text = ""; 
        for ($i=0;$i<= $anzahl;$i++) 
        { 
        $pos_begin = strpos ($text_stueck[$i],"]"); 
        $pos_end = strpos($text_stueck[$i],"[/html]"); 
        $ersetzen = substr ($text_stueck[$i],$pos_begin+1,$pos_end); 
        $ersetzen_durch = htmlentities("[html]".$ersetzen."[/html]"); 
        $text_stueck[$i] = str_replace ("[html]".$ersetzen."[/html]",$ersetzen_durch,$text_stueck[$i]);
        $text .= $text_stueck[$i];  
        } 
        echo $text;
        
        ?>
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #19
          hmm,

          in meiner Version die ich von dir geklaut hab und dann erweitert hab klappt alles sehr schön, dafür ist der Code leider alles andere als schön Aber trotzdem mal posten, vielleicht blickt noch einer durch :
          Code:
          unction codetagcheck($in,$out,$text,$highlight,$class,$symbol,$symclass,$var,$varclass)
          	{
          		$explo = explode($in,$text);
          			   	$new = "";
          				for($i=0;$i<count($explo);$i++)
          			   		{
          						$return = strstr($explo[$i],$out);
          						if (!$return)
          							{
          								$new .= $explo[$i];
          							}
          						else
          							{
          								
          								$co = substr($explo[$i],0,strlen($explo[$i])-strlen($return));
          								for($n=0;$n<count($symbol);$n++)
          									{
          										$co = str_replace($symbol[$n],"<b CLASS=\"$symclass\">".$symbol[$n]."</b>",$co);
          									}
          								for($n=0;$n<count($highlight);$n++)
          									{
          										//$dumm = "/(?i)(?<![$a-zA-Z0-9])(".$highlight[$n].")/"; 
          										$dumm = "/(?<![\$a-zA-Z0-9]{1})(".$highlight[$n].")(?![\$a-zA-Z0-9]{1})/";
          										$co = preg_replace($dumm,"<b CLASS=\"$class\">\\1</b>",$co);
          									}
          								for($n=0;$n<count($var);$n++)
          									{
          										//$dumm = "/(?i)(?<![$a-zA-Z0-9])(".$highlight[$n].")/"; 
          										$dumm = "/".$var[$n]."/";//(?![a-zA-Z0-9_]{1})/";
          										$co = preg_replace($dumm,"<b CLASS=\"$varclass\">\\1\\2</b>",$co);
          									}	
          								$new .= $co.substr($return,strlen($out));
          							}
          					}
          				return $new;	
          	}
          Das war die Function die du brauchst, die workt alles ausseinander und auch wieder zusammen und wird aufgerufen von hier
          Code:
          function checkJBBTag($text, $user, $userClass, $configdaten)
            {$configdaten["phpTag"] = "on";
                  if ($configdaten["phpTag"] == "on")
          			{
          				$highlight = array ("echo","else","elseif","for","global","if","return","while","print",
          									"yaz_search","yaz_syntax","yaz_wait","yp_first","yp_get_default_domain","yp_maser",
          								"yp_match","yp_next","yp_orderzend_logo_guid","zend_test_func","zend_version");
          
          
          				$phpsym = array ("!=","#","==","{","}","(",")","[","]");
          				$phpvar = array ("([\$])([a-zA-Z0-9_].*)(?![:alnum:])");
          				
          				$hack = "|(\[php\])(.*?)(\[/php\])|s";
                       	$code = "\n<br><!--phpTag-->\n<table border='0' cellpadding='0' cellspacing='0'>\n".
                                  "<tr><td colspan='2'><img src='bilder/klara.gif' width='400' height='1'></td></tr>".
                                  "<tr>\n\t<td><img src='bilder/klara.gif' width='10' height='1'></td><td><img src='bilder/klara.gif' width='400' height='1'></td>\n</tr>\n".
                                  "<tr>\n\t<td colspan='2'><b class='zitattitle'>phpCODE:</b></td>\n</tr>\n".
                                  "<tr><td colspan='2' background='bilder/strichel.gif'><img src='bilder/klara.gif' width='1' height='1'></td></tr>".
                                  "<tr valign='top'>\n".
                                  "\t<td><img src='bilder/klara.gif' width='1' height='1'></td>".
                                  "\t<td class='php'>".
                                  "[php]\\2[/php]</td>\n</tr>\n".
                                  "<tr><td colspan='2'><img src='bilder/klara.gif' width='1' height='10'></td></tr>".
                                  "<tr><td colspan='2' background='bilder/strichel.gif'><img src='bilder/klara.gif' width='1' height='1'></td></tr>".
                                  "</table>\n<!--phpCode-->\n";
          				$text = preg_replace($hack,$code,$text);
          				$text = codetagcheck("[php]","[/php]",$text,$highlight,"phpbefehl",$phpsym,"phpgrenze",$phpvar,"phpvar");
          			}
                  return $text;
          }
          Ich hoffe irgendwer kann damit noch was anfangen, also damit generiere ich das Syntaxhighlighting aufem JBB und das geht ganz gut.

          Kommentar


          • #20
            Ich hab grad noch mal dein anfangsposting gelesen und da stellte sich mir eine frage, willst du die zeichen zwischen
            HTML-Code:
             und
            mit htmlentities umwandeln oder die anderen?
            die zwischen den tags oder?
            Of all things I've lost
            I miss my mind the most

            Kommentar


            • #21
              alles was zwischen
              HTML-Code:
               und
              steht soll nicht mit htmlentities bearbeitet werde. um dem autor das verwenden von html zu ermöglichen. so als wenn du hier i forum html verwenden könntest.
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #22
                hmm,

                eigentlich ist es doch ganz einfach wenn man zuerst denkt und dann codet
                Code:
                if (strpos($string,"[html]")==0)
                   {   // zuerstmal schaun ob das ding nicht mit [html] anfängt, das ist nämlich ne falle
                       $beginn = 0;
                   }
                else
                   {
                        $beginn = 1;
                   }
                $lala = explode ("[html]",$string);
                //dann haben wir schonmal fast alles was wir brauchen
                if ($beginn == 1)
                  { 
                     $returnstring = htmlentities($lala[0]);
                     for ($i=1;$i<count($lala);$i++)
                      {
                          $splitter = explode("[/html]",$lala[$i]);
                          $returnstring .= $splitter[0].htmlentities($splitter[1]);
                      }
                  }
                if ($beginn == 0)
                  {
                     $returnstring = ""; 
                     for ($i=0;$i<count($lala);$i++)
                      {
                          $splitter = explode("[/html]",$lala[$i]);
                          $returnstring .= $splitter[0].htmlentities($splitter[1]);
                      }
                    }
                so sollte es wirklich gehen !

                [Editiert von JoelH am 01-03-2002 um 11:02]

                Kommentar


                • #23
                  !!!!NEIN!!!!
                  Und ich hab die ganze Zeit versucht das genau anders herum zu machen. Dann kann das natürlich nicht das gewünschte Ergebnis geben

                  Also das ganze änder.
                  Aus:
                  $ersetzen = substr ($text_stueck[$i],$pos_begin+1,$pos_end);
                  $ersetzen_durch = htmlentities("
                  HTML-Code:
                  ".$ersetzen."
                  ");
                  $text_stueck[$i] = str_replace ("
                  HTML-Code:
                  ".$ersetzen."
                  ",$ersetzen_durch,$text_stueck[$i]);

                  wird:
                  $ersetzen_durch = substr ($text_stueck[$i],$pos_begin+1,$pos_end);
                  $ersetzen = htmlentities ("
                  HTML-Code:
                  ".$ersetzen_durch."
                  ");
                  $text_stueck[$i] = htmlentities ($text_stueck[$i]);
                  $text_stueck[$i] = str_replace ($ersetzen,$ersetzen_durch,$text_stueck[$i]);
                  Of all things I've lost
                  I miss my mind the most

                  Kommentar


                  • #24
                    hmm,

                    die Idee dabei ist :
                    Zuerst alles splitten nach
                    HTML-Code:
                    dann hab ich, wenn es mit [html] losgeht, immer Arrayelement like :
                    balbalba
                    balbalbal
                    asdsadsadsad[/html]sdaserfdsadsaf
                    ....
                    der erste Teil soll erhalten bleiben, alles nach [/html] soll gekillt werden, also nochmal ein explode auf [/html]
                    damit hab ich dann ein Array mit 2 Elementen das erste soll rein bleiben das zweite immer gekillt werden. Also behandle ich das zweite Element immer mit htmlentities bein zusammenbauen des Strings.

                    Geht der string nicht mit [html] los muss wir das erste element gesondert behandeln denn das soll gekillt werden . Der rest ist praktisch gleich.

                    Kommentar


                    • #25
                      hmm,

                      das komplette Testscript :
                      Code:
                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
                      
                      <html>
                      <head>
                      	<title>Untitled</title>
                      </head>
                      
                      <body>
                      
                      <?php
                       $string = "[html]<br><br>[/html]blabla[html]<br>[/html]lalal<br>lala[html]<br>[/html]lalala";
                       // $string = "blabla[html]<br>[/html]lalal<br>lala[html]<br>[/html]lalala";
                       
                      if (strpos($string,"[html]")==0)
                         {   // zuerstmal schaun ob das ding nicht mit [html] anfängt, das ist nämlich ne falle
                             $beginn = 0;
                         }
                      else
                         {
                              $beginn = 1;
                         }
                      $lala = explode ("[html]",$string);
                      //dann haben wir schonmal fast alles was wir brauchen
                      if ($beginn == 1)
                        { 
                           $returnstring = htmlentities($lala[0]);
                           for ($i=1;$i<count($lala);$i++)
                            {
                                $splitter = explode("[/html]",$lala[$i]);
                                $returnstring .= $splitter[0].htmlentities($splitter[1]);
                            }
                        }
                      if ($beginn == 0)
                        {
                           $returnstring = ""; 
                           for ($i=0;$i<count($lala);$i++)
                            {
                                $splitter = explode("[/html]",$lala[$i]);
                                $returnstring .= $splitter[0].htmlentities($splitter[1]);
                            }
                          }
                      echo $returnstring;
                      
                      ?>
                      
                      
                      </body>
                      </html>

                      Kommentar


                      • #26
                        DANKE!!!!!!
                        JoelH du bist genial es läuft!!!! das gbt nen hinweis im quellcode ( der zweite )

                        aber auch Tj99de many many thx for the many arbeit!!!!
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #27
                          Original geschrieben von schmalle
                          @sky was möchtest du von mir?
                          Hattest du nicht weiter oben erwähnt, dass du schon einen Ansatz mit RegEx hattest?

                          CAT Music Files

                          Kommentar


                          • #28
                            hmm,

                            Original geschrieben von Sky
                            Original geschrieben von schmalle
                            @sky was möchtest du von mir?
                            Hattest du nicht weiter oben erwähnt, dass du schon einen Ansatz mit RegEx hattest?
                            schmalle zeigt nur zwei Ansätze, den Bauchansatz und das Bierglasansetzen

                            Kommentar


                            • #29
                              hmm nachdem ich mir schon die halbe nacht um die ohren geschlagen hab weils mir net einging, dass ich net auf die richtige regular expression komm, post ich das ergebnis des aufgebens (kann doch wohl net sein, dass sich das net als reg.exp erfassen lässt... ) dann doch noch mal, vielleicht kanns ja noch jemand brauchen (is auch net recht elegant, aber zumindest kürzer :

                              Code:
                              <?
                              $teststring="hallo<hr color='#0000FF'>[html]<hr>[/html]hallo 2<hr color='#0000FF'>[html]<b>text</b>[/html]";
                              $teststring=str_replace("[html]","|||[html]",$teststring);
                              $teststring=str_replace("[/html]","[/html]|||",$teststring);
                              $testarray=explode("|||", $teststring);
                              $number=count($testarray);
                              for($i=0;$i<$number;$i++)
                                {
                                  if(substr($testarray[$i],1,4)=="html")
                              	  {
                              	    $stop_pos=strlen($testarray[$i]);
                              		$stop_pos=$stop_pos-13;
                              		$newarray[$i]=substr($testarray[$i],6,$stop_pos);
                              	  }
                              	else
                              	  {
                              	    $newarray[$i]=htmlspecialchars($testarray[$i]);
                              	  }
                                }
                              
                              $final=implode(" ",$newarray);
                              echo $final;
                              ?>
                              grüsse aus der holledau,
                              sonja

                              Kommentar


                              • #30
                                vielen dank auch dir sonja!
                                @joelH ... wir sprechen uns noch!!!!

                                hab das teil nun nochmals umgebaut, um es auch für einen off Tag zu verwenden. nur seltsamerweise baut er mir in den text immer wieder ne null ein ?!?
                                ich werde sie zwar in einer anderen function wieder los, aber ich möchte wisses, wo die herkommt...

                                Code:
                                // OFF Tag zulassen:
                                function parser($string) {
                                if(!strstr($string, "[off]")) {
                                 $string = parsen($string);
                                 return $string;
                                                               } else {
                                if (strpos($string,"[off]")==0)
                                   {   
                                       $beginn = 0;
                                   }
                                else
                                   {
                                        $beginn = 1;
                                   }
                                $lala = explode ("[off]",$string);
                                if ($beginn == 1)
                                  { 
                                     $returnstring = parsen($lala[0]);
                                     for ($i=1;$i<count($lala);$i++)
                                      {
                                          $splitter = explode("[/off]",$lala[$i]);
                                          $returnstring .= $splitter[0].parsen($splitter[1]);
                                      }   
                                  }
                                if ($beginn == 0)
                                  {
                                     $returnstring = ""; 
                                     for ($i=0;$i<count($lala);$i++)
                                      {
                                          $splitter = explode("[/off]",$lala[$i]);
                                          $returnstring .= $splitter[0].parsen($splitter[1]);
                                      }
                                    }
                                $string = $returnstring;
                                } // ende erste if / else
                                return $string;
                                                       }
                                // Text Parser ( auszugsweise )
                                function parsen($string) { 
                                // Überschüssige Nullen entfernen
                                $zahl = strlen($string);
                                if(strrchr($string, "0") == "0") {
                                $string = substr($string, 0,$zahl-1);
                                                                 }
                                return($string);	  
                                	                 }
                                h.a.n.d.
                                Schmalle

                                http://impressed.by
                                http://blog.schmalenberger.it



                                Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                                ... nur ohne :-)

                                Kommentar

                                Lädt...
                                X