Habe diesem Spam-Schutz in einer 4.6.23 MR in der cms/front_content.php eingebaut. In meiner Version nutze ich auch die VPTransformation.
Einfach folgenden Code in der cms/front_content.php der 4.6.23 MR suchen:
Code: Alles auswählen
			/*
			 * That's it! The code of an article will be evaluated.
			 * The code of an article is basically a PHP script which is cached in the database.
			 * Layout and Modules are merged depending on the Container definitions of the Template.
			 */
			
			// edit by stese - ModRewrite
			ob_start();
        	eval ("?>\n".$code."\n<?php\n");
			$strAll = ob_get_contents();
			ob_end_clean();
			
			// mod rewrite is activated
			if ( $cfg['mod_rewrite']['use'] == 1 ) {
				$sseStarttime = getmicrotime();
				
				// edit 060603 - anchor hack
				$strAll = preg_replace_callback(
						"/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", 
						create_function( '$arr_matches' , 'return ModRewrite::rewrite_html_anchor($arr_matches);' ),
						$strAll
				);
				
				// remove fucking tinymce single quote entities:
				$strAll = str_replace("'", "'", $strAll);
				
				// IE hack with wrong base href interpretation 
				$strAll = preg_replace ( "/([\"|\'|=])upload\/(.?|.+?)([\"|\'|>])/ie", "stripslashes('\\1${str_base_uri}upload/\\2\\3')", $strAll );
				
				// ok let it beginn, start mod rewrite class
				$strAll = preg_replace_callback(
						"/([\"|\'|=])front_content\.php(.?|.+?)([\"|\'|>])/i", 
						create_function( '$arr_matches' , 'return $arr_matches[1] . ModRewrite::build_new_url($arr_matches[2]) . $arr_matches[3];' ),
						$strAll
				);
				$sseEndtime = getmicrotime();
			} else {
				// anchor hack for non modrewrite websites
				$strAll = preg_replace_callback(
						"/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", 
						create_function( '$arr_matches' , 'return ModRewrite::contenido_html_anchor($arr_matches, $GLOBALS["is_XHTML"]);' ),
						$strAll
				);
			}
			print ($strAll);
			// print "\n\n<!-- modrewrite generation time: " . ($sseEndtime - $sseStarttime) . " seconds -->";
			// end edit
		}
	}
und durch diesen ersetzen:
Code: Alles auswählen
			/*
			 * That's it! The code of an article will be evaluated.
			 * The code of an article is basically a PHP script which is cached in the database.
			 * Layout and Modules are merged depending on the Container definitions of the Template.
			 */
			 
			// MIT VPTRANSFORMATION + EMAIL-SPAM-SCHUTZ
           // edit by stese - ModRewrite
            ob_start();
            eval ("?>\n".$code."\n<?php\n");
            $strAll = ob_get_contents();
            ob_end_clean();
			
            /*  Transformations - IVP - start */
                   cInclude("includes", "functions.transformations.php");
                   $strAll = Transform($strAll);
		    /*  Transformations - IVP - ende */
			
			// mod rewrite is activated
			if ( $cfg['mod_rewrite']['use'] == 1 ) 
			{
				$sseStarttime = getmicrotime();
				
				// edit 060603 - anchor hack
				$strAll = preg_replace_callback(
						"/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", 
						create_function( '$arr_matches' , 'return ModRewrite::rewrite_html_anchor($arr_matches);' ),
						$strAll
				);
				
				// remove fucking tinymce single quote entities:
				$strAll = str_replace("'", "'", $strAll);
				
				// IE hack with wrong base href interpretation 
				$strAll = preg_replace ( "/([\"|\'|=])upload\/(.?|.+?)([\"|\'|>])/ie", "stripslashes('\\1${str_base_uri}upload/\\2\\3')", $strAll );
				
				// ok let it beginn, start mod rewrite class				
				$strAll = preg_replace_callback( "/([\"|\'|=])front_content\.php(.?|.+?)([\"|\'|>])/i",
                  create_function( '$arr_matches' , 'return $arr_matches[1] . ModRewrite::build_new_url($arr_matches[2]) . $arr_matches[3];' ), $strAll);
				// EMAIL-SPAM-SCHUTZ - start - edit by rzwei
					 $pattern = '/[_a-z0-9:]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z0-9]{2,4})/';
			
					 preg_match_all ($pattern, $strAll, $mailtext);
					 
					 foreach($mailtext[0] as $email_now) 
						 {
							$strEncodedEmail = "";
							for ($i=0; $i < strlen($email_now); $i++) 
								{
									$strEncodedEmail .= "&#".ord(substr($email_now,$i)).";";
								}
							$strAll = str_replace($email_now, $strEncodedEmail, $strAll);
							$sseEndtime = getmicrotime();
						 }
				   // EMAIL-SPAM-SCHUTZ - ende - edit by rzwei
				   // Nachfolgende Zeile liegt in Originaldatei an dieser Stelle (auskommentiert, da schon aufgerufen in der EMAIL-SPAM-SCHUTZ-ERWEITERUNG)
				   // $sseEndtime = getmicrotime();
			} else {
				// anchor hack for non modrewrite websites
				$strAll = preg_replace_callback( "/<a([^>]*)href\s*=\s*[\"|\'][\/]#(.?|.+?)[\"|\']([^>]*)>/i", 
			create_function( '$arr_matches' , 'return ModRewrite::contenido_html_anchor($arr_matches, $GLOBALS["is_XHTML"]);' ), $strAll);
			}
							// EMAIL-SPAM-SCHUTZ fuer NICHT-ModRewrite-SEITEN - start - edit by rzwei
					 $pattern = '/[_a-z0-9:]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z0-9]{2,4})/';
			
					 preg_match_all ($pattern, $strAll, $mailtext);
					 
					 foreach($mailtext[0] as $email_now) 
						 {
							$strEncodedEmail = "";
							for ($i=0; $i < strlen($email_now); $i++) 
								{
									$strEncodedEmail .= "&#".ord(substr($email_now,$i)).";";
								}
							$strAll = str_replace($email_now, $strEncodedEmail, $strAll);
						 }
				   // EMAIL-SPAM-SCHUTZ fuer NICHT-ModRewrite-SEITEN - ende - edit by rzwei
			     print ($strAll);
			// print "\n\n<!-- modrewrite generation time: " . ($sseEndtime - $sseStarttime) . " seconds -->";
			// end edit
		}
	}
MfG Steffen