Revision: 12614
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at April 17, 2009 23:15 by kossmoss
                            
                            Updated Code
function closetags($text){
	preg_match_all("#<([a-zA-Z]{1,50})[^>]*>#i",$text,$otags);
		if(count($otags[1])>0){
			$fotags=array();
			$fctags=array();
			foreach($otags[1] as $otag){
				$otag = strtolower($otag);
				if(isset($fotags[$otag]))
					$fotags[$otag]++;
				else
					$fotags[$otag] = 1;
			}
			preg_match_all("#</([a-zA-Z]{1,50})#i",$text,$ctags);
			foreach($ctags[1] as $ctag){
				$ctag = strtolower($ctag);
				if(isset($fctags[$ctag]))
					$fctags[$ctag]++;
				else
					$fctags[$ctag] = 1;
			}
			$rtags = array_reverse($fotags, TRUE);
			foreach ( $rtags as $tag => $cnt)
			{
				$fctags[$tag] = isset($fctags[$tag]) ? $fctags[$tag] : 0;
				$text .= str_repeat("</".$tag.">",abs($fctags[$tag] - $cnt));
			}
		}
	$wrong_replace = array(
		'</br>' => '',
		'</img>' => '',
		'</hr>' => '',
		'</link>' => '',
		'</meta>' => ''
		);
	$text=strtr($text, $wrong_replace);	
	return $text;
}
                                
                            Revision: 12613
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at April 17, 2009 22:31 by kossmoss
                            
                            Updated Code
function closetags($text){
	preg_match_all("#<[^a-zA-Z>/]*([a-zA-Z]{1,50})#i",$text,$otags);
		if(count($otags[1])>0){
			$fotags=array();
			$fctags=array();
			foreach($otags[1] as $otag){
				$otag = strtolower($otag);
				if(isset($fotags[$otag]))
					$fotags[$otag]++;
				else
					$fotags[$otag] = 1;
			}
			preg_match_all("#</([a-zA-Z]{1,50})#i",$text,$ctags);
			foreach($ctags[1] as $ctag){
				$ctag = strtolower($ctag);
				if(isset($fctags[$ctag]))
					$fctags[$ctag]++;
				else
					$fctags[$ctag] = 1;
			}
			foreach ( $fotags as $tag => $cnt)
			{
				$fctags[$tag] = isset($fctags[$tag]) ? $fctags[$tag] : 0;
				$text .= str_repeat("</".$tag.">",abs($fctags[$tag] - $cnt));
			}
		}
	return $text;
}
                                
                            Revision: 12612
                            
                                                            
                                    
                                        
Updated Code
                                    
                                    
                                                    
                        at March 30, 2009 23:34 by kossmoss
                            
                            Updated Code
function closetags($text){
		//last word cutting
		$text = substr($text, 0, strrpos($text," "));	
		$text = preg_replace("/<[^>]*$/i", "", $text);
		//tag closing
		preg_match_all("/<[^a-zA-Z>\/]*([a-zA-Z]{1,50})/i",$text,$otags);
			if(count($otags[0])>0){
				$fotags=array();
				$fctags=array();
				preg_match_all("/<[ t]*\/[^a-z]*([a-z]{1,50})/i",$text,$ctags);
				foreach($otags[1] as $otag){
					$otag = strtolower($otag);
					if(isset($fotags[$otag]))
						$fotags[$otag]++;
					else
						$fotags[$otag] = 1;
				}
				foreach($ctags[1] as $ctag){
					$ctag = strtolower($ctag);
					if(isset($fctags[$ctag]))
						$fctags[$ctag]++;
					else
						$fctags[$ctag] = 1;
				}
				while(list($tag, $cnt) = each($fotags)){
					$fctags[$tag] = isset($fctags[$tag]) ? $fctags[$tag] : 0;
					$text .= str_repeat("",abs($fctags[$tag] - $cnt));
				}
			}
		return $text;
	}
                                
                            Revision: 12611
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at March 20, 2009 20:59 by kossmoss
                            
                            Initial Code
function closetags($text){
		//обрезка поÑледнего Ñлова
		$text = substr($text, 0, strrpos($text," "));	
		$text = preg_replace("/<[^>]*$/i", "", $text);
		//закрытие тегов
		preg_match_all("/<[^a-zA-Z>\/]*([a-zA-Z]{1,50})/i",$text,$otags);
			if(count($otags[0])>0){
				$fotags=array();
				$fctags=array();
				preg_match_all("/<[ t]*\/[^a-z]*([a-z]{1,50})/i",$text,$ctags);
				foreach($otags[1] as $otag){
					$otag = strtolower($otag);
					if(isset($fotags[$otag]))
						$fotags[$otag]++;
					else
						$fotags[$otag] = 1;
				}
				foreach($ctags[1] as $ctag){
					$ctag = strtolower($ctag);
					if(isset($fctags[$ctag]))
						$fctags[$ctag]++;
					else
						$fctags[$ctag] = 1;
				}
				while(list($tag, $cnt) = each($fotags)){
					$fctags[$tag] = isset($fctags[$tag]) ? $fctags[$tag] : 0;
					$text .= str_repeat("",abs($fctags[$tag] - $cnt));
				}
			}
		return $text;
	}
                                Initial URL
http://www.promoforum.ru/index.php?showtopic=12687&view=findpost&p=97701
Initial Description
closes opened tags in text piece. original code slightly modified to supress PHP warnings NOTE: need to fix the order of closing tags to get standards compliance
Initial Title
Tag closing for HTML text pieces
Initial Tags
html, text, function
Initial Language
PHP