";
$dot="";
$in = preg_replace ("/\b([\w.\-]+)@([\w\-]+)\.([\w\-.]+)\b/", "\\1$at\\2$dot\\3", $in);
return $in;
}
function badaddress ($in){
if (!preg_match("/^[\w.-]+@[\w-]+\.[\w.-]+$/",$in)) {return 1;} # basic format and chars
elseif (preg_match("/\.\./",$in)) {return 1;} # double dots
elseif (preg_match("/@\.|\.@/",$in)) {return 1;} # @ adj dot
elseif (preg_match("/^\./",$in)) {return 1;} # dot at begining
elseif (preg_match("/\.$/",$in)) {return 1;} # dot at end
else {return 0;}
}
function charray($a){
foreach ($a as $key=>$val){ $a[$key]=rtrim($val); }
return $a;
}
function makelinks($in){
$in = preg_replace ("/\b(http:\/\/[\w?=%~&\-.\/+]+[\w\/])/", "\\1", $in);
$in = preg_replace ("/([^\/])(www\.[\w?=%~&\-.\/+]+[\w\/])/", "\\1\\2", $in);
return $in;
}
function makepass($c){
srand ((float) microtime() * 10000000); $password="";
$okletters="abcdefghijklmnopqrstuvwxyz0123456789";
while ($c){ $c--; $password.=substr($okletters, intval(rand(0,36)),1 );}
return ($password);
}
function nicedate($wk){
if (preg_match("/(\d\d\d\d)\-(\d\d)\-(\d\d)/", $wk,$m)){
list($bla,$yr,$mo,$dy)=$m; $mo--;
}
else { return($wk);}
$wd=array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct" ,"Nov","Dec");
return ("$dy $wd[$mo] $yr");
}
function goodtext($work){
global $hcount,$ecount;
$hcount= $ecount=0;
for($c=0;$c<256;$c++){
$char=ord(substr($work,$c,1));
if ($char<32 && $char != 10 && $char != 13 && $char != 9 ){$hcount++;}
if ($char>126){$ecount++;}
}
$tcount=strlen($work);
if ($hcount){return (0);}
if ($ecount> (0.05*$tcount)){return(0);}
return (1);
}
function myhtml2txt($wk){
#### Handle
tag if (preg_match("/<\s*pre\s*>/i",$wk)){ $temp=""; while (preg_match("/^(.+?)<\s*pre\s*>(.+?)<\s*\/\s*pre\s*>(.+)$/si",$wk,$m) ){ $beg=$m[1];$pre=$m[2];$aft=$m[3]; $pre=preg_replace("/ /","{{s}}",$pre); $pre=preg_replace("\t/","{{t}}",$pre); $pre=preg_replace("\n/","{{n}}",$pre); $temp.=$beg.$pre; $wk=$aft; } $wk=$temp; } #### Ditch chunks #preg_match("/<\s*title\s*>\s*(.+?)\s*<\s*\/\s*title\s*>/is",$wk,$m);$title=$m[1]; # keep title $wk=preg_replace("/^.+<\s*\/\s*head\s*>/si","",$wk); # ditch: head $wk=preg_replace("/<\s*style.*?>.*?<\s*\/\s*style\s*>/si","",$wk); # style defns $wk=preg_replace("/<\s*script.*?>.+?<\s*\/\s*script\s*>/si","",$wk); # scripts $wk=preg_replace("/[\t\n ]+/"," ",$wk); # newlines, spaces, tabs #### Transfer tag information $wk=preg_replace("/ *< *a +href *= *\"?([^\"> ]+)\"?.*?> */i"," $1 ",$wk); # retain urls $wk=preg_replace("/ *< *(br|table).*?> */i","\n",$wk); # various \n triggers $wk=preg_replace("/ *< *\/ *(dd|dt|li|tr).*?> */i","\n",$wk); # " $wk=preg_replace("/ *< *\/?(dl|ol|ul|hr|p|h\d|blockquote).*?> */i","\n\n",$wk); # " $wk=preg_replace("/ *< *\/td *> */i","\t",$wk); # crude table coherance #### Map (some of the) special chars $a=array('nbsp','quot','lt','gt','copy','deg','sup1','sup2','sup3','frac14','frac12','frac34','pound','cent','yen'); $b=array(" ",'<','>','©','°','¹','²','³','¼','½','¾','£','¢','¥'); for($c=0;$c<14;$c++){ $find=$a[$c];$repl=$b[$c];$wk=preg_replace("/&$find;/",$repl,$wk); } $wk=preg_replace("/(151);/e",ord(151),$wk); # change format $wk=preg_replace("/(149);/e",ord(149),$wk); # change format $wk=preg_replace("/(9);/e"," ",$wk); # change format #### Clean up $wk=preg_replace("/<.+?>/s","",$wk); # ditch all tags $wk=preg_replace("/(\n[\t ]+|[\t ]+\n)/","\n",$wk); # stray whitespace $wk=preg_replace("/(\n[\t ]+|[\t ]+\n)/","\n",$wk); # stray whitespace $wk=preg_replace("/\n\n+/","\n\n",$wk); # ditto $wk=preg_replace("/{{s}}/"," ", $wk); $wk=preg_replace("/{{t}}/","\t",$wk); $wk=preg_replace("/{{n}}/","\n",$wk); # pre formating $wk=preg_replace("/^\s+/","",$wk); $wk=preg_replace("/\s+$/","",$wk); # whitespace top and end return($wk); } function mysafehtml($wk){ #removes any suspect html $wk= preg_replace("/<\s*appl[^>]+>.+?<\s*\/appl[^>]+>/si", "", $wk); $wk= preg_replace("/<\s*embb[^>]+>.+?<\s*\/embb[^>]+>/si", "", $wk); $wk= preg_replace("/<\s*scri[^>]+>.+?<\s*\/scri[^>]+>/si", "", $wk); $wk= preg_replace("/<\s*obje[^>]+>.+?<\s*\/obje[^>]+>/si", "", $wk); $wk= preg_replace("/<\s*meta[^>]+>/si", "", $wk); $wk= preg_replace("/",$wk); #comments, ssi $wk= preg_replace("/(<[^>]+) on[\w]+ ?= ?\"[^\" >]+\"([^>]*)>!--.+?>/si","$1 tag=stripped $2",$wk); #event handlers $wk= preg_replace("/( src\s*=\s*\"?)http[^\" >]+/si","$1"."ext-img.gif",$wk); #external images $wk= preg_replace ("'<[?%]=? [^>]+?>'si", "" ,$wk); #php and asp return($wk); } function make7bit ($body){ // removes any 8 bit chars suitable for email $body=preg_replace("/\r\n/","\n",$body); $body=preg_replace("/[\r\cM]/","",$body); $body=preg_replace("/[^\x20-\x7E\n\t]/","§",$body); return($body); } function tidyup($wk){ // cleans up stray white space $wk = preg_replace("/[ \t]+\n/", "\n", $wk); $wk = preg_replace("/\n[ \t]+\n/", "\n\n", $wk); $wk = preg_replace("/\n\n+/", "\n\n", $wk); $wk=trim($wk); return($wk); } function sanitize($wk){ ## One off sift of any new form data ## this is a matched pair to htmlize() // delete any suspect chars ie control chars, nulls, etc #$wk=preg_replace("/[\x00-\x08\x0B-\x0C\x0E-\x1F]/","",$wk); //ditch ctrl chars #$wk=preg_replace("/[\x7f]/","",$wk); // ? //make some judicous char conversions for the sake of sanity $wk=preg_replace("/\t/"," ",$wk); # tab $wk=preg_replace("/[\x93\x94]/","\"",$wk); # smart double quotes $wk=preg_replace("/[\x91\x92]/","'",$wk); # smart single quotes $wk=preg_replace("/[\x95]/","*",$wk); # bullet $wk=preg_replace("/[\x85]/","...",$wk); # ellipsis $wk=preg_replace("/[\x86\x87]/","--",$wk); # m and n dashes $wk=preg_replace("/[\xA0]/"," ",$wk); # nbsp // manage quotes and magic quoting $wk= preg_replace ("/\\\([\'\"\\\])/","\\1",$wk); // ditch backslashes put there by magic quoting $wk= preg_replace ("/['\"]/","`",$wk); // solve sql single quote hassles simply by using `s $wk= preg_replace ("/\\\/","/",$wk); // convert any stray backslashes // once and for all time rid any dos newlines $wk=preg_replace("/\r\n/","\n", $wk); $wk=preg_replace("/[\r\cM]/","", $wk); // Sift any undesirable html $wk= mysafehtml($wk); //worst case over length if (strlen($wk)>100000){bail("Form variable exceeds 100K");} //tidy $wk= tidyup($wk); return ($wk); } function htmlize($wk){ ## gets plain text ready for placing web page ## adds br tags and converts <>"& etc to avoid problems // translate key html chars $wk= htmlspecialchars($wk); //avoids [<>"&] stuffing up the webpage, which dismembers any html tags // convert plural whitespace $wk = preg_replace("/ /", " ", $wk); // convert newlines $wk= trim ($wk); $wk = preg_replace ("/\n/", "
", $wk); return($wk); } ?>