phpbar.de logo

Mailinglisten-Archive

[php] UBB per Regex umwandeln

[php] UBB per Regex umwandeln

Johannes Mager php_(at)_phpcenter.de
Wed, 08 May 2002 17:17:24 +0200


>> $text = str_replace('[u]',<u>,$text);
>> $text = str_replace('[b]',<b>,$text);
>> $text = str_replace('[i]',<i>,$text);
>> $text = str_replace('[/u]',</u>,$text);
>> $text = str_replace('[/b]',</b>,$text);
>> $text = str_replace('[/i]',</i>,$text);
>>
>> echo $text;
> 
> Hallo
> 
> So hatte ich das ganze auch zuest gelöst jedoch gibt es da ein grossers
> problem... und zwar wenn jemand im editor [/u] vergisst zu schiessen wwird
> dann die ganze seite unterstrichen :)

hm...ich hab einfach alle tags in einem array und kontrolliere die dann 
auf gleichen anzahl:
vielleicht kannst du das script ja elegant überarbeitetwieder in die 
liste stellen :)


function check_tags($string) // kontrollliert ob gleich viele +xyz+ wie 
-xyz- vorkommen
{ 
	
		$gr = array("+gr+","-gr-");
		$u1 = array("+u1+","-u1-");
		$rot = array("+rot+","-rot-");
		$mail = array("+mail+","-mail-");
		$link = array("+link+","-link-");
		$kl = array("+kl+","-kl-");
		
		$tags = array($gr,$u1,$rot,$mail,$link,$kl);
		
		foreach ( $tags as $elem)
		{
			
			$offset = 0;
			$count_b1 = 0;
			while($pos = strpos(" ".$string,$elem[0],$offset) )
			{
				$count_b1++;
				$offset = $pos + 3;
				if ($count_b1 > 200) die("!!!!!!!!!!endlos");
			}
			$offset = 0;
			$count_b2 = 0;
			while($pos = strpos(" ".$string,$elem[1],$offset) ) //  mit " ". wird der 
suchstring auch am anfang des strings gefunden.
			
			{
				$count_b2++;
				$offset = $pos + 3;
				if ($count_b2 > 200) die("!!!!!!!!!!endlos");
			}
			
			if ($count_b1 != $count_b2)
			 die("Die Anzahl der Zeichen $tag1 und $tag2 stimmt nicht überein.<br>
			 Sie müssen jeden angefangenen Fettdruck auch wieder abschliessen.
			 (Bsp.: unwichtiger text $elem[0] wichtiger text $elem[1] unwichtiger text)
			 <br><br>Der Text wurde nicht gespeichert.</body></html>");
	 
	}//end foreach
}


php::bar PHP Wiki   -   Listenarchive