ich will ja nicht nerven, aber es ist das selbe ergebnis ....
die richtige schleife() ?!?
Einklappen
X
-
h.a.n.d.
Schmalle
http://impressed.by
http://blog.schmalenberger.it
Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
... nur ohne :-)
-
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."
mal
$text_stueck[$i] = str_replace ("HTML-Code:".$ersetzen."
Of all things I've lost
I miss my mind the most
Kommentar
-
ä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
-
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; }
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; }
Kommentar
-
Ich hab grad noch mal dein anfangsposting gelesen und da stellte sich mir eine frage, willst du die zeichen zwischenHTML-Code:und
die zwischen den tags oder?Of all things I've lost
I miss my mind the most
Kommentar
-
alles was zwischenHTML-Code:und
h.a.n.d.
Schmalle
http://impressed.by
http://blog.schmalenberger.it
Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
... nur ohne :-)
Kommentar
-
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]); } }
[Editiert von JoelH am 01-03-2002 um 11:02]
Kommentar
-
!!!!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."
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
-
hmm,
die Idee dabei ist :
Zuerst alles splitten nachHTML-Code:dann hab ich, wenn es mit [html] losgeht, immer Arrayelement like : balbalba
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
-
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
-
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
-
Original geschrieben von schmalle
@sky was möchtest du von mir?
Kommentar
-
hmm,
Original geschrieben von Sky
Original geschrieben von schmalle
@sky was möchtest du von mir?
Kommentar
-
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; ?>
sonja
Kommentar
-
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
Kommentar