Spam-védett mailto linkek

…html- és url-encoding segítségével.
Forrás (JS-verzió): http://www.metaprog.com/samples/encoder.htm (2003)

PHP-funkció (futtatható): http://ideone.com/AUfv3o

// SPAM-PROTECTED MAILTO LINKS WITH HTMLENTITIES & URL-ENCODED CHARACTERS v2.0 - To, CC, BCC, Subject 
// HTML-EXAMPLE:	http://jsfiddle.net/krabat1/2v8ef5jc/
//					http://codepen.io/krabat1/pen/zgswr
 
function spamsafe($email,$text = NULL,$cc = NULL,$bcc = NULL,$subj = NULL,$body = NULL){
	if( isset( $email ) ){
		if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
			echo('not valid');
			return false;
		}else{
			$pattern="/([!#$%&'*+\/=?^_`{|}~\-@\.])/";
		// email
			if( $matches = preg_split($pattern, $email,NULL,PREG_SPLIT_DELIM_CAPTURE) ){
				$str1='';
				$str2='';
				foreach($matches as $element){
					if( strlen($element)>1 || preg_match("/([a-z0-9])/",$element) ){
						$m2 = preg_split("//", $element, -1, PREG_SPLIT_NO_EMPTY);
						foreach($m2 as $m3){
							$str1.='%'.strtoupper(dechex(ord($m3)));
							$str2.='&#'.ord($m3).';';
						}
					}else if( preg_match($pattern,$element) ){
						$str1.='&#'.ord($element).';';
						$str2.='&#'.ord($element).';';
					}
				}
		// elements
				$elements = array('mailto',':','?','&','=','cc','bcc','subject','body');
				$elements_r = array();
				foreach($elements as $e){
					$e = preg_split("//", $e, -1, PREG_SPLIT_NO_EMPTY);
					$e_r='';
					foreach($e as $e2){
						//if( preg_match("/([a-z0-9])/",$e2) ){
						//	$e_r.='%'.strtoupper(dechex(ord($e2)));
						//}else{
							$e_r.='&#'.ord($e2).';';
						//}
 
					}
					array_push($elements_r,$e_r);
				}
				$mailto_str = $elements_r[0];
				$colon_str = $elements_r[1];
				$question_str = $elements_r[2];
				$amper_str = $elements_r[3];
				$equals_str = $elements_r[4];
				$cc_str = $elements_r[5];
				$bcc_str = $elements_r[6];
				$subject_str = $elements_r[7];
				$body_str = $elements_r[8];
 
		//texts
			$texts=array('text' => $text,'cc' => $cc,'bcc' => $bcc,'subj' => $subj,'body' => $body);
			$texts_r=array();
				foreach($texts as $tk => $tv){
					if( !is_null($tv) ){
						$tv2 = preg_split("//", $tv, -1, PREG_SPLIT_NO_EMPTY);
						$str='';
						if($tk=='cc'){
							$str.=$cc_str.$equals_str;
						}else if($tk=='bcc'){
							$str.=$bcc_str.$equals_str;
						}else if($tk=='subj'){
							$str.=$subject_str.$equals_str;
						}else if($tk=='body'){
							$str.=$body_str.$equals_str;
						}
						foreach($tv2 as $tv3){
							//$str.='%'.strtoupper(dechex(ord($tv3)));
							$str.='&#'.ord($tv3).';';
						}
						$texts_r[$tk]=$str;
					}
				}
				//$texts_rk=array_keys($texts_r);
				if( isset($texts_r['text']) ){
					$text0=$texts_r['text'];
					unset($texts_r['text']);
				}
				$texts_rv=array_values($texts_r);
		//start final string
				$final='<a href="'.$mailto_str.$colon_str.$str1;
 
				if( count($texts_rv) > 0 ){
						$final.=$question_str.implode($amper_str,$texts_rv);
				}
				if( isset($text0) ){
					$texts_r=array('text' => $text0);
				}
				$final.='">';
				if( is_null($text) ){
					$final.=$str2;
				}else{
					$final.=$texts_r['text'];
				}
				$final.='</a>';
				return $final;
			}
		}
	}
}
 
echo( spamsafe('recipient@domain.com') . '
<br/>');
echo( spamsafe('recipient@domain.com','Email Us!') . '
<br/>');
echo( spamsafe('recipient@domain.com','Email Us!','other@domain.com') . '
<br/>');
echo( spamsafe('recipient@domain.com','Email Us!','other@domain.com',NULL,'Enquiry regarding product #0022') . '
<br/>');
echo( spamsafe('recipient@domain.com','Email Us!','other@domain.com','hidden@domain.com','Enquiry regarding product #0022','I would like more information on product #0022') . '
<br/>');

Simple
recipient@domain.com
Link text
Email Us!
Link text, cc
Email Us!
Link text, cc, subject
Email Us!
Link text, cc, bcc, subject, body
Email Us!

Minden vélemény számít!

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>