Convert PHP to ASP

Conversion issues

Convertor source

PHP vs ASP

Feedback / Contact us

The following code is the convertor page, exactly as it appears here. It was built 'quick and dirty' for a one-off internal project and therefore may seem a bit opaque and longwinded at times.

This page imports the html file php-asp_equivalents.htm. for the function equivalents list.

You may use this code, and php-asp_equivalents.htm for your own use, provided that you agree to:

  1. allow us to add your improvements to both the convertor and its data file.
  2. credit us with a link if you place this code, or anything derived from it, on a publicly accessible web server..

Enjoy...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD>   <TITLE>PHP - ASP convertor</TITLE> <style type="text/css"> <!-- td { font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000; text-decoration: none} span { font-family: Arial, Helvetica, sans-serif; font-size: 16px; color: #000000; font-weight: bold; text-decoration: none} A { text-decoration:none color:#003300 } A:hover { color:#660000 } --> </style> </head> <body bgcolor="#FFFFFF" text="#000000" link="#003300" vlink="#003300" alink="#660000"> <table width="800" border="0" cellspacing="1" cellpadding="1"> <tr> <td valign="top"><img src="../php-asp-convertor.gif" width="100" height="106"> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <p> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="simonp@influenca.com"> <input type="hidden" name="no_note" value="1"> <input type="hidden" name="currency_code" value="GBP"> <input type="hidden" name="tax" value="0"> <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> </p> <p> <script type="text/javascript"><!-- google_ad_client = "pub-0833314467244560"; google_ad_width = 120; google_ad_height = 600; google_ad_format = "120x600_as"; google_ad_channel =""; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </p> </form></td> <td><? set_time_limit(5); $php_file=$_POST["php_file"]; //echo $php_file; $Submit=$_POST["Submit"]; $function_count=0; $matchedfunctions=0; function white_space($char){   $whitespace=' '.chr(13).chr(10).chr(9).' ';   for ($i=0; $i<strlen($whitespace); $i++){     if ($char==$whitespace[$i])     $white=1;   }   return $white; } function add_code_at_top($match){   //echo 'adding code at top'.$asp_top[$match];   global $asp_top;   global $asp_top_code;   global $asp_top_functions;   if ($asp_top[$match] && !strpos($asp_top_functions,','.$match.',')){     $asp_top_functions.='!,'.$match.','; // list of what's already included so we don't add functions more than once     $asp_top_code.=chr(10).$asp_top[$match];   } } function printout($string){   for ($i=0; $i<strlen($string); $i++){   echo $string[$i];   if (ord($string[$i])<32)   echo '['.ord($string[$i]).']';   } } function htmldecode($string){   $string=str_replace('&gt;','>',$string);   $string=str_replace('&lt;','<',$string);   $string=str_replace('&quot;','"',$string);   $string=str_replace('&nbsp;',' ',$string);   $string=str_replace('&amp;','&',$string);   return $string; } function findend($end,$current_position){   // ending is what we're looking for. nl= new line   global $php_file;   $new_position=$current_position;   $endchr=chr(10);   while ($php_file[$new_position]!=$endchr && $new_position<$end){     $new_position++;   }   return $new_position; } function trimspace($string){ $string=str_replace(' ','@#!NEWLINE!',$string); $string=trim($string); $string=str_replace('@#!NEWLINE!',' ',$string); return $string; } // ********************************************************* function set_functions(){   global $php_functions;   global $asp_functions;   global $asp_endings;   global $asp_top;   global $asp_bottom;   global $bracketstack;   $bracketstack=array();   $page= fopen("php-asp_equivalents.htm", "r") or die("can't open file");   $pagestring=fread($page, 3000000);   fclose ($page);   $pagestring=str_replace(chr(10),'',$pagestring);   $pagestring=str_replace(chr(12),'',$pagestring);   $pagestring=str_replace(' ',' ',$pagestring);   $pagestring=str_replace('   ',' ',$pagestring);   $pagestring=str_replace(' ',' ',$pagestring);   $pagestring=str_replace('<br>&nbsp;',chr(10),$pagestring);   $pagestring=str_replace('<br> ',chr(10),$pagestring);   $pagestring=str_replace('&quot;','"',$pagestring);   $pagestring=str_replace('<p>','',$pagestring);   $pagestring=str_replace('</p>','',$pagestring);   $pagestring=str_replace('<br>',chr(10),$pagestring);   $pagestring=str_replace('</td>','',$pagestring);   $pagestring=str_replace('</tr>','',$pagestring);   $pagestring=htmldecode($pagestring);   $rows=explode('<tr>',$pagestring);   for ($i=2; $i<count($rows); $i++){     $parts=explode('<td>',$rows[$i]);     $php_functions[$i-1]=trimspace($parts[1]);     $asp_functions[$i-1]=trimspace($parts[3]);     $asp_endings[$i-1]=trim($parts[4]);     $asp_top[$i-1]=trim($parts[5]);     $asp_bottom[$i-1]=trim($parts[6]);   }   // and now add the other functions } // ******************************************************************** function find_function($position,$endblockposition){   // this function goes through the functions, finds a match, and sets global variables for swap_function to swap it for the asp equivalent, global $firstletters; $firstletters.=$php_file[$position];   global $php_functions;   global $asp_functions; global $matchedfunctions;   global $asp_endings;   global $php_file;   global $asp_file;   global $failure;   global $parts;   global $match;   global $bracketstack;   $match=0; //echo '<p>looking for a function to swap for '.substr($php_file,$position,10).'...'; // is this with in our block??   //if ($php_file[$position]!='?'){     for ($i=1; $i<count($php_functions)+1; $i++){   //echo '<br>trying '.$php_functions[$i];       $n=$position;       $fn=0;       $failed=0;       $overflow=0;       $match=0;       while (!$failed && !$match){   //echo $n.','.$fn.'<br>';         if($php_file[$n]==$php_functions[$i][$fn] OR strtolower($php_file[$n])==$php_functions[$i][$fn]){           $n++;           $fn++;           //echo '<b>'.$php_file[$n].'</b>='.$php_functions[$i][$fn];         }else{           // (each space can be taken to be zero or more spaces)           if (white_space($php_file[$n]) && $php_functions[$i][$fn-1]==' '){             //echo 'whitespace in php file'.$php_file[$n].'<br>';             $n++;           }elseif(white_space($php_functions[$i][$fn])){             //echo 'whitespace in php functions'.$php_functions[$i][$fn].'<br>';             $fn++;           }elseif($php_functions[$i][$fn]=='%'){   //echo 'on the parts: ';             // so we're in the parts. %a%, %b%, %X% etc.             $fn++;             $part_label=$php_functions[$i][$fn];             $fn=$fn+2;             while($php_functions[$i][$fn]==' ')               $fn++;             $partstart=$n;             $terminator=$php_functions[$i][$fn];             $found_terminator=0;             $inescaped='';             while(!$found_terminator && $n<strlen($php_file) && !$failed){               if ($inescaped){   //echo '<i>'.$php_file[$n].'</i>{'.$inescaped.'}';                 // $inescaped is the character that prevents what we're looking at being relevent (ie "blah blah;")                 if ($php_file[$n]==$inescaped[0] && $php_file[$n-1]!='\\'){                   $inescaped=substr($inescaped,1);                 }               }else{   //echo '<b>'.$php_file[$n].'</b>';                   if ($php_file[$n]=='"' OR $php_file[$n]=="'")                   $inescaped=$php_file[$n].$inescaped;                 if ($php_file[$n]=='(')                   $inescaped=')'.$inescaped;                 if ($php_file[$n]==$terminator){                   $found_terminator=1;// terminator is actually a seperator -terminates the block ie %a%   //echo '<br>Found terminator';                   $fn++; //echo '<i>'.substr($php_file,$partstart,$n-$partstart).'</i>';                   $parts[$part_label]=substr($php_file,$partstart,$n-$partstart); //echo '=<i>'.$parts[$part_label].'</i>';                 }                 if($part_label=='X' && $php_file[$n]==chr(10)){ //echo 'found a carriage return';                   if ($terminator=='#'){ // # means return. //echo " and it's the terminator: ".substr($php_file,$partstart,$n-$partstart);                     $found_terminator=1;                     $fn++;                     $n--;                     //back character added here as this is normally the buffer between functions                     //echo 'fn='.$fn.'. and strlen='.strlen($php_functions[$i]);                     $parts[$part_label]=substr($php_file,$partstart,$n-$partstart);                       }else{ //echo " and it's not the terminator. Terminator being sought is -$terminator-";                     $failed=1; // no return in an X                   }                         }     //echo $php_file[$n].'{'.ord($php_file[$n]).'}';               }               $n++;                         }           }else{             $failed=1;   //echo 'simply not the same';           }         }         if ($fn>=strlen($php_functions[$i])){ $matchedfunctions++;           $match=$i;           // and put the { on the stack if necessary           if ($asp_endings[$i]){             array_push($bracketstack,$asp_endings[$i]);             //echo 'gonna add '.$asp_endings[$i].' at next }<p>';           } echo '.';           //echo '<br><b>found a match:</b> ('.substr($php_file,$position,$n-$position).')=('.$php_functions[$i].')'.$i.'<p>';           $i=count($php_functions)+1;// to terminate for loop         }elseif($n>$endblockposition){           //echo '<b>end of php block</b>';           $failed=2;         }       }//while     }//for   return $n; } // ******************************************************************** function flip ($var){ // logical NOT   if ($var)   $var=0;   else   $var=1; return $var; } // ******************************************************************** function validvar ($char){   // returns true if $char is valid in a variable (or function) name ie is alpha or _   if (ord($char)>64 && ord($char)<91 )   $valid=1;   if (ord($char)>96 && ord($char)<123 )   $valid=1;   if ($char=='_')   $valid=1;   return $valid; } // ******************************************************************** function swap_function ($start,$end){ // swap fundtions found by find_function using global variables below   global $php_functions;   global $asp_functions; global $matchedfunctions;   global $bracketstack;   global $php_file;   global $asp_file;   global $asp_endings;   global $failure;   global $parts;   global $match;   $function_count=0; // function count counts functions in order to deal with nested brackets   $fn_end=find_function ($start,$end);   $n=$start;   //echo 'going through swap. '.count($partkeys).' parts';     if ($match){       add_code_at_top($match);       $thefunction=$asp_functions[$match];       //echo 'Match found!';;       $partkeys=array_keys($parts);       //$parts;       for ($i=0; $i<count($partkeys); $i++){ //echo '<br><b>on</b> '.$parts[$partkeys[$i]].'which has '.strlen($parts[$partkeys[$i]]).' characters';         //update partkeys - magic quotes, mark other functions for translation, etc.         $forlimit=$parts[$partkeys[$i]];         for ($ip=0; $ip<strlen($forlimit); $ip++){   //echo '<br>On part: <b>'.$parts[$partkeys[$i]].'</b><br>';         //echo $parts[$partkeys[$i]][$ip];         if ($partkeys[$i]!='X'){           if ($parts[$partkeys[$i]][$ip]=='"'){             // DOUBLE QUOTES             if($insingle){               $parts[$partkeys[$i]]=substr($parts[$partkeys[$i]],0,$ip).'"'.substr($parts[$partkeys[$i]],$ip);               $ip++; // cos just added in a double quote to escape             }elseif ($parts[$partkeys[$i]][$ip-1]==chr(92)){               $parts[$partkeys[$i]][$ip-1]='"';             }else{               $indouble=flip($indouble);             }           }elseif ($parts[$partkeys[$i]][$ip]=="'"){ //echo 'In single quotes';             // SINGLE QUOTES             if ($parts[$partkeys[$i]][$ip-1]==chr(92)){ //echo 'ESCAPE FOUND('.substr($parts[$partkeys[$i]],$ip-2,3).')';               $parts[$partkeys[$i]]=substr($parts[$partkeys[$i]],0,$ip-1).substr($parts[$partkeys[$i]],$ip);             }else{ //echo 'No escape found('.substr($parts[$partkeys[$i]],$ip-2,3).')';               $parts[$partkeys[$i]][$ip]='"';               $insingle=flip($insingle);             }           }elseif ($parts[$partkeys[$i]][$ip]=="."){             // STRING CONCOTANATION             if(!$insingle && !$indouble){               //$parts[$partkeys[$i]][$ip]="&";               $parts[$partkeys[$i]]=substr($parts[$partkeys[$i]],0,$ip).' & '.substr($parts[$partkeys[$i]],$ip+1);               $ip=$ip+2;             }                       }elseif ($parts[$partkeys[$i]][$ip]=="$" && $indouble && validvar($parts[$partkeys[$i]][$ip+1])){             // MAGIC QUOTES             // acceptable characters for a variable             $varname='$';             $startvar=$ip;             $ip++;             while (validvar($parts[$partkeys[$i]][$ip])&& $ip<strlen($parts[$partkeys[$i]])){               $varname.=$parts[$partkeys[$i]][$ip];               $ip++;             }             if ($parts[$partkeys[$i]][$ip]=='['){               $brackets=0;               while (!$endofsquarebrackets && $ip<strlen($parts[$partkeys[$i]])){                 if($parts[$partkeys[$i]][$ip]=='[')                   $brackets++;                 if($parts[$partkeys[$i]][$ip]==']')                   $brackets--;                 $varname.=$parts[$partkeys[$i]][$ip];                 if (!$brackets && $parts[$partkeys[$i]][$ip+1]!='[')                   $endofsquarebrackets=1;                 $ip++;               }             }             $ip++;             //echo '<br> i:'.$i.' $partkeys[$i]: '.$partkeys[$i].' $parts[$partkeys[$i]]: '.$parts[$partkeys[$i]]; // NEW             $parts[$partkeys[$i]]=substr($parts[$partkeys[$i]],0,$startvar).'" & '.$varname.' & "'.substr($parts[$partkeys[$i]],$ip-1);             $parts[$partkeys[$i]]=str_replace(' & ""','',$parts[$partkeys[$i]]);             }elseif ($parts[$partkeys[$i]][$ip]=='$' && !$insingle && !$indouble){             // Skip to the end of any VARIABLES, so as not to confuse them with functions             $ip++;             while (validvar($parts[$partkeys[$i]][$ip]) && $ip<strlen($parts[$partkeys[$i]])){               $ip++;             }             $ip--;           }elseif (validvar($parts[$partkeys[$i]][$ip]) && !$insingle && !$indouble){             // Mark as FUNCTION if we get letters outside quotes             $parts[$partkeys[$i]]=substr($parts[$partkeys[$i]],0,$ip).'@@@function{{{'.substr($parts[$partkeys[$i]],$ip);                   $ip=$ip + strlen('@@@function@@@');             while (validvar($parts[$partkeys[$i]][$ip])&& $ip<strlen($parts[$partkeys[$i]])){               $ip++;             }             //$ip++;           }         }         }         if (strpos('.'.$thefunction,'%'.$partkeys[$i].'%')){         $thefunction=str_replace('%'.$partkeys[$i].'%',$parts[$partkeys[$i]],$thefunction); //echo 'part in function';         }else{           $loopend=array_pop($bracketstack);           $loopend=str_replace('%'.$partkeys[$i].'%',$parts[$partkeys[$i]],$loopend);           array_push($bracketstack,$loopend); //echo ' count($bracketstack)='.count($bracketstack); //echo '<p>$bracketstack['.$thisloop.']='.$loopend.'</p>';         }       $parts[$partkeys[$i]]=''; // unset it       } //echo "<br><b>XXX: $thefunction</b> $matchedfunctions matched. Now at $fn_end";         $asp_file.=$thefunction;   $asp_file.=chr(10); //echo htmlentities($asp_file);     }elseif ($php_file[$start]=='}'){ //echo "ADDING ENDING }";     $fn_end=$start+1;     $asp_file.=array_pop($bracketstack).chr(10);   }elseif ($failed<2 && $php_file[$fn_end]!='?') {       while (validvar($php_file[$fn_end]))       $fn_end++;       //$n=findend($end,$n);   $chars=$fn_end-$start+1;       $asp_file.=substr($php_file,$start,$chars);       $failure[]=substr($php_file,$start,$chars);     }   //}     return $fn_end; // where the next statement picks up from } // ******************************************************************** function find_php(){   global $php_file;   global $asp_file; $i=0;   while($i<strlen($php_file)){   // do we bother translating it or not? - (include also <?php etc)     if ($php_file[$i]=='?' && $php_file[$i-1]=='<'){     $php=1;     $asp_file.='% '; // the other < will already be there     $i++;     }elseif ($php_file[$i]=='>' && $php_file[$i-1]=='?'){ //echo 'DID IT UP HERE';     $php=0;     //$asp_file=substr($asp_file,0,-2).chr(10).'%>';     $asp_file.=chr(10).'%>';     $i++;     }     if ($php){       while (white_space($php_file[$i])) { // get to end of white space       $i++;       }       $end=$i;       $foundend=0;       while (!$foundend) { // get to end of php block         $end++;         if ($php_file[$end]=='>' && $php_file[$end-1]=='?')           $foundend=1;         if ($end>strlen($php_file))           $foundend=1;       }       $i=swap_function ($i,$end); //echo 'Gone to swap_function<p>'; //echo '1:<br>'.htmlentities($asp_file); /*       if ($i>=$end){ //echo '3:<br>'.htmlentities($asp_file);         // it remains a mystery how it went past the end, but it did, and this puts it right. echo 'gone past the end by '.substr($php_file,$i,$end-$i).'('.$end-$i.'characters';         $asp_file=substr($asp_file,0,$end-1).chr(10).'%>'; //echo '4:<br>'.htmlentities($asp_file);         $i=$end;         $php=0;       } */     }else{     $asp_file.=$php_file[$i];     }   $i++;   } } // ************************************************************** function findcompoundfunctions(){ echo $php_file;   global $php_functions;   global $asp_functions;   global $bracketstack;   global $asp_endings;   global $php_file;   global $asp_file;   global $failure;   global $parts;   global $match; global $failed;   while ($x=strpos($php_file,'@@@function{{{')){ //echo '<p>with @@@ etc:'.htmlentities($php_file);     $php_file=substr($php_file,0,$x).substr($php_file,$x+strlen('@@@function{{{')); //     echo '<p>without @@@ etc:'.htmlentities($php_file);     $fn_end=find_function ($x,strlen($php_file)); // ******** copied from swap_function ********   if ($match){     $thefunction=$asp_functions[$match];     //echo '2nd pass Match found!';     $partkeys=array_keys($parts);     for ($i=0; $i<count($partkeys); $i++){       $thefunction=str_replace('%'.$partkeys[$i].'%',$parts[$partkeys[$i]],$thefunction);     }     $php_file=substr($php_file,0,$x).$thefunction.substr($php_file,$fn_end);     add_code_at_top($match); //echo $match.':'.$thefunction.':';   }elseif ($failed<2) {     $failure[]=substr($php_file,$start,$n-$start);   } // ********** end of copied from swap_function ********   } } // ********************************************************** function findfunctionname($position){   global $asp_file,$fn_name_list;   $lookingfor='Function fn_';   $length=strlen($lookingfor);   $n=$position;   while (!$found && $n>0){     if (substr($asp_file,$n,$length)==$lookingfor)       $found=$n;     $n--;   }   $found=$found+$length;   while (white_space($asp_file[$found]))     $found++;   $fn_length=0;   while (validvar($asp_file[$found+$fn_length]))     $fn_length++;   $name=substr($asp_file,$found,$fn_length);   $fn_name_list.=','.$name;   return 'fn_'.$name; } // ********************************************************** function doreturns(){   global $asp_file;   // find $var_the_function_name   while ($pos=strpos($asp_file,'$var_the_function_name')){   $markerlength=strlen('$var_the_function_name');   $name=findfunctionname($pos);   $asp_file=substr($asp_file,0,$pos).$name.substr($asp_file,$pos+$markerlength); } } // ********************************************************** function unique($string){   // takes a comma seperated list, and returns a unique one with no blanks   $string=substr($string,1);   $str_array=explode(',',$string);   $string=implode(',',array_unique($str_array));   return $string; } // ********************************************************** function tracevars(){   global $asp_file,$asp_top_code;   //printout($asp_file);   $defined='';   $i=0;   while($i<strlen($asp_file)){   // do we bother translating it or not? - (include also <?php etc)     if ($asp_file[$i]=='%' && $asp_file[$i-1]=='<'){     $asp=1;     }elseif ($asp_file[$i]=='>' && $asp_file[$i-1]=='%'){     $asp=0;     $i++;     }   // if it's in quotes, also leave it alone     if ($asp_file[$i]=='"'){       if (!$inquotes)       $inquotes=1;       elseif($asp_file[$i+1]!='"')       $inquotes=0;       else{         // multi " - get to end and work out what we're doing         $noquotes=1;         $i++;         while($asp_file[$i]=='"'){         $noquotes=$noquotes*-1;         $i++;         }         if ($noquotes>0)         $inquotes=1;       }     }elseif ($asp_file[$i]==chr(10) && $asp){ //echo "<br>".substr($asp_file,$i,12).'...';       while(white_space($asp_file[$i]))       $i++; //echo '&lt;'.substr($asp_file,$i,8).'&gt; ';       if (substr($asp_file,$i,9)=='Function '){         $infunction=1;         $local_vars="";         $global_list=" ";// not blank so strpos>0         // Get global variable list if there is one! (maybe global x, y; global z; - ie spread on multiple lines, or not //       //}elseif (substr($asp_file,$i,1)=='E'){       }elseif (substr($asp_file,$i,12)=='End Function'){ //echo 'found end of function';         $infunction=0;         $local_vars=unique($local_vars); if ($local_vars){         $local_vars='lv_'.str_replace(',',', lv_',$local_vars); $plocal_vars=' Dim '.$local_vars;         $asp_file=substr($asp_file,0,$globalstart).$plocal_vars .substr($asp_file,$globalstart);         //echo $asp_file; }         $i=$i+12+strlen($plocal_vars);       }elseif ($infunction && substr($asp_file,$i,13)=='Global_vars {'){         $globalstart=$i;         $i=$i+13;         while ($asp_file[$i]!='}')           $i++;         $nochars=$i-$globalstart-13;         $global_list.=','.str_replace(' ','',substr($asp_file,$globalstart+13,$nochars)).',';         $asp_file=substr($asp_file,0,$globalstart).substr($asp_file,$i+1);         $i=$globalstart-1;       }           }   // so worked out wether or not we need to count this variable     if ($asp && !$inquotes){       if($asp_file[$i]=='$'){ //echo 'variable found';         // so it's a variable - find the name         $i++;         $start=$i;         while(validvar($asp_file[$i]))           $i++;         $varname=substr($asp_file,$start,$i-$start); //$n=$i-$start; //echo '<br>-'.$varname.'-'.$start.'('.$asp_file[$start].'),'.$n.' blah2 <br>';         while(white_space($asp_file[$i]))         $i++;                 if($asp_file[$i]=='['){           //so it's an array //echo 'an array';           while($asp_file[$i]=='['){             $asp_file[$i]='(';             while ($asp_file[$i]!=']')               $i++;             $asp_file[$i]=')';             while(white_space($asp_file[$i]))               $i++;           }           $array=1;         }else{           $array=0;         }         if ($asp_file[$i]=='+' OR $asp_file[$i]=='-' OR $asp_file[$i]=='*' OR $asp_file[$i]=='/' OR $asp_file[$i]=='%'){           $type[$varname]='math';           //echo ', math';         }elseif ($asp_file[$i]=='='){           //echo ', defined';           $defined.=','.$varname;           // not right - what if it's just being incremented or something         }         if ($array)         $varname.='()';         if ($infunction && !strpos($global_list,',$'.$varname.',')){           $local_vars.=','.$varname;           $asp_file=substr($asp_file,0,$start-1).'lv_'.substr($asp_file,$start);           //$i=$i+2;         }else{           $global_vars.=','.$varname;           $asp_file=substr($asp_file,0,$start-1).'gv_'.substr($asp_file,$start);           //$i=$i+2;         }         // if next is =, but not in 'if', while, etc, then set as defined         // at end ie not in this loop, list the undefineds and ask where they're from       }     }   $i++;   }   $global_vars=unique ($global_vars);   $global_vars='gv_'.str_replace(',',', gv_',$global_vars); if (strlen (trim($global_vars))>3) $global_vars='Dim '.$global_vars; else $global_vars='';   $asp_top_code=$global_vars.$asp_top_code; } // ********************************************************** if ($Submit){ $php_file=stripslashes($php_file); $php_file=str_replace('?>',' ?>',$php_file); $php_file=str_replace('<?','<? ',$php_file);   set_functions();   //trace_undefined_vars(); // in php they could be from get, post, cookie, etc   find_php(); // swap php functions for asp equivalents //echo '2:<br>'.htmlentities($asp_file);   $original_file=$php_file;   $php_file=$asp_file; //echo '<p> the @@\'d file:<br>'.htmlentities($asp_file).'<p>';   findcompoundfunctions(); // second pass   $asp_file=$php_file;   doreturns(); //printout($php_file);   tracevars();   if ($asp_file[0]=='<' && $asp_file[1]=='%')     $asp_file='<%'.chr(10).$asp_top_code.chr(10).substr($asp_file,2);   else     $asp_file='<%'.chr(10).$asp_top_code.'%>'.chr(10).$asp_file;   //change_system_vars(); // all those things like $PHP_SELF   //dedollarfy(); // remove $ from variable names and change [] to () for arrays     if ($failure){         for ($z=0; $z<=count($failure); $z++){     if (trim($failure[$z]))       $out.= $failure[$z].'<br>';     }     if (trim($out))     echo "<p>Couldn't translate these functions:<br>*".htmlentities($out).'*';     echo '<p>';   }   // ************************ change called function names     //echo $fn_name_list;   $fns=explode(',',$fn_name_list);   for ($fnc=1; $fnc<=count($fns); $fnc++){   //echo 'looking for '.$fns[$fnc];   $asp_file=str_replace(' '.$fns[$fnc].'(',' fn_'.$fns[$fnc].'(',$asp_file);   $asp_file=str_replace(' '.$fns[$fnc].' (',' fn_'.$fns[$fnc].'(',$asp_file); $asp_file=str_replace('   '.$fns[$fnc].'(',' fn_'.$fns[$fnc].'(',$asp_file);   $asp_file=str_replace('   '.$fns[$fnc].' (',' fn_'.$fns[$fnc].'(',$asp_file); $asp_file=str_replace(' '.$fns[$fnc].'(',' fn_'.$fns[$fnc].'(',$asp_file);   $asp_file=str_replace(' '.$fns[$fnc].' (',' fn_'.$fns[$fnc].'(',$asp_file);   } $asp_file=str_replace(' fn_(',' (',$asp_file);// fudge     echo 'The ASP equivalent of your PHP:<br><textarea name="asp" rows="25" cols="100">'.htmlentities($asp_file).'</textarea>';     //printout($php_file); //printout($firstletters); } //echo '<p>PHP:<textarea name="php_file" rows="15" cols="100">'.$original_file.'</textarea>'; ?> <p>Please Note this is a development version and will contain errors <p>gv_, lv_ and fn_ are added to global variables, local variables and function names to protect the namespace<br> </td> </tr> <tr> <td><img src="/shim.gif" width="100" height="1"></td> <td><img src="/shim.gif" width="600" height="1"></td> </tr> </table> <br> </BODY> </HTML>