Regulärer ausdruck in eienr schleife?

Funjoy

Erfahrenes Mitglied
Hallo,

Ich bastle mir gerade ne Klasse welche UBB Codes in Html Umwandeln kann und es soll möglich sein eigene Codblöcke wie z.B. [-HTML-] selber mit ein systaxhighlight auszustatten dafür habe ich mir schon was ausgedacht was wenn ich den direkten name eingebe funktioniert also so:

PHP:
<?php 
...
$codestring = preg_replace("!<a (.+)>(.+)<\/a>!Ui","<font color=\"#009900\">&lt;a $1&gt;</font>$2<font color=\"#009900\">&lt;/a&gt;</font>",$str);
...
?>

da würde er mir dann ein Link grün darstellen das Funktioniert auch gut aber da ich das ja Dynamisch haben will habe ich ein array geschrieben mit den Keywords .

so wenn ich es jetzt Dynamisch Probiere schaut das ganze so aus:
PHP:
<?php 
...
$codestring = preg_replace("!<".$ArrayKeywords[0]." (.+)>(.+)<\/".$ArrayKeywords[0].">!Ui","<font color=\"".$ArrayKeywords[3]."\">&lt;".$ArrayKeywords[0]." $1&gt;</font>$2<font color=\"".$ArrayKeywords[3]."\">&lt;/".$ArrayKeywords[0]."&gt;</font>",$str);
...
?>

aber da wird dann der Link halt nicht umgewandelt und grün dargestellt.

wer da noch nicht ganz durchblickt und mehr Code brauch hier bitt :)

PHP:
<?php 
class UBBManager
  {
	var $CodeActivate = TRUE;			#> Bestimmen ob Code Blöcke angezeigt werden dürfen.
	
	var $Imageactivate = TRUE;			#> Bestimmen ob Bilder bzw. Grafiken angezeigt werden dürfen.
	var $ImageMaxWidth = 600;			#> Maximale Breite eines Bildes.
	var $ImageMaxHeight = 600;			#> Maximale Höhe eines Bildes.
	
	var $AutomaticUrlDecode = TRUE;		#> Hyperlinks Automatisch Linken.
	
	
	var $CodeForm = array(1 => "<>",2 => "\$",3 => "f()",4 => "c()");
	#--> Html Schlüsselwörter die farblich hervorgehoben werden sollen. (Achtung veränderung der Keywords kann zu Fehlern führen.)
	var $HtmlKeywords = array("a:2:1:#009900","script:2:1:#990000","form:2:1:#FF9900","textarea:2:1:#FF9900","input:1:1:#FF9900","table:2:1:#009999","th:2:1:#009999","tr:2:1:#009999","td:2:1:#009999","tbody:2:1:#009999","tfoot:2:1:#009999","&:1:0:<b>","*:1:1:#000099");

	
	
	function CodeBlockDefine($str,$keywords)
	  {
		
		for($x=0;$x<=count($keywords);$x++)
		  {
			$ArrayKeywords = explode(":",$keywords[$x]);
			if($this->CodeForm[$ArrayKeywords[2]] == "<>")
			  {
				if($ArrayKeywords[0] != "*")
				  {
					#$codestring = preg_replace("!<a (.+)>(.+)<\/a>!Ui","<font color=\"#009900\">&lt;a $1&gt;</font>$2<font color=\"#009900\">&lt;/a&gt;</font>",$str);
					$codestring = preg_replace("!<".$ArrayKeywords[0]." (.+)>(.+)<\/".$ArrayKeywords[0].">!Ui","<font color=\"".$ArrayKeywords[3]."\">&lt;".$ArrayKeywords[0]." $1&gt;</font>$2<font color=\"".$ArrayKeywords[3]."\">&lt;/".$ArrayKeywords[0]."&gt;</font>",$str);  
				}  
			}
		}
		
		return $codestring; 
	}
}
?>

Hoffe einer kann helfen

MfG Funjoy
 
Wie instanzierst Du ein Objekt aus der Klasse und wie benutzt Du dieses? Vielleicht liegt dort der Hase begraben. Des Weiteren ist mir aufgefallen, dass Du die Variablen im regulären Ausdruck mittels [phpf]preg_quote[/phpf] quoten solltest.
 
Hallo,

Also so benutze ich die Klasse ich denke mal darann liegt es nicht oder?

PHP:
<?php
include("UBBManager.php");
$string ="<a href=\"#\">Link</a>";

$ubb = new UBBManager();
echo $ubb->CodeBlockDefine($string,$ubb->HtmlKeywords);
?>

preg_quote() werde ich mit einbauen aber darnn kann es auch nicht liegen da keine Umlaute in der String ist.

MfG Funjoy
 
Zurück