1) Added setting of syntax properties to italic, underline and strike through.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCodeScanner.java
index 84f31f4..70df0eb 100644 (file)
 /**********************************************************************
-Copyright (c) 2000, 2002 IBM Corp. and others.
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Common Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/cpl-v10.html
+ Copyright (c) 2000, 2002 IBM Corp. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Common Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/cpl-v10.html
 
-Contributors:
-    IBM Corporation - Initial implementation
-    Klaus Hartlage - www.eclipseproject.de
-**********************************************************************/
+ Contributors:
+ IBM Corporation - Initial implementation
+ www.phpeclipse.de
+ **********************************************************************/
 package net.sourceforge.phpeclipse.phpeditor.php;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
-import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider;
+import net.sourceforge.phpdt.internal.ui.text.AbstractJavaScanner;
+import net.sourceforge.phpdt.ui.text.IColorManager;
+import net.sourceforge.phpeclipse.IPreferenceConstants;
+import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
 import net.sourceforge.phpeclipse.phpeditor.util.PHPWhitespaceDetector;
 import net.sourceforge.phpeclipse.phpeditor.util.PHPWordDetector;
-import org.eclipse.jface.text.TextAttribute;
-import org.eclipse.jface.text.rules.EndOfLineRule;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+//incastrix
+//import org.eclipse.jface.text.Assert;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.text.rules.ICharacterScanner;
 import org.eclipse.jface.text.rules.IRule;
 import org.eclipse.jface.text.rules.IToken;
+import org.eclipse.jface.text.rules.IWordDetector;
 import org.eclipse.jface.text.rules.MultiLineRule;
-import org.eclipse.jface.text.rules.RuleBasedScanner;
-import org.eclipse.jface.text.rules.SingleLineRule;
 import org.eclipse.jface.text.rules.Token;
 import org.eclipse.jface.text.rules.WhitespaceRule;
 import org.eclipse.jface.text.rules.WordRule;
 
 /**
- * A Java code scanner.
+ * PHP Code Scanner
  */
-public class PHPCodeScanner extends RuleBasedScanner {
+public class PHPCodeScanner extends AbstractJavaScanner {
+
+       /**
+        * Rule to detect java operators.
+        *
+        * @since 3.0
+        */
+       protected class OperatorRule implements IRule {
+
+               /** Java operators */
+               private final char[] PHP_OPERATORS = { ';', '(', ')', '.', '=', '/',
+                               '\\', '+', '-', '*', '[', ']', '<', '>', ':', '?', '!', ',',
+                               '|', '&', '^', '%', '~', '@' };
+
+               /** Token to return for this rule */
+               private final IToken fToken;
+
+               /** Token to return for braces */
+               private final IToken fTokenBraces;
+
+               /** Token to return for heredocs */
+               private final IToken fTokenHeredoc;
+
+               /**
+                * Creates a new operator rule.
+                *
+                * @param token
+                *            Token to use for this rule
+                * @param tokenHeredoc
+                *            TODO
+                */
+               public OperatorRule(IToken token, IToken tokenBraces,
+                               IToken tokenHeredoc) {
+                       fToken = token;
+                       fTokenBraces = tokenBraces;
+                       fTokenHeredoc = tokenHeredoc;
+               }
+
+               /**
+                * Is this character an operator character?
+                *
+                * @param character
+                *            Character to determine whether it is an operator character
+                * @return <code>true</code> iff the character is an operator,
+                *         <code>false</code> otherwise.
+                */
+               public boolean isOperator(char character) {
+                       for (int index = 0; index < PHP_OPERATORS.length; index++) {
+                               if (PHP_OPERATORS[index] == character)
+                                       return true;
+                       }
+                       return false;
+               }
+
+               /*
+                * @see org.eclipse.jface.text.rules.IRule#evaluate(org.eclipse.jface.text.rules.ICharacterScanner)
+                */
+               public IToken evaluate(ICharacterScanner scanner) {
+
+                       int character = scanner.read();
+                       if (character == '{' || character == '}') {
+                               return fTokenBraces;
+                       }
+                       if (isOperator((char) character)) {
+                               int lastCharacter = character;
+                               character = scanner.read();
+                               // the readHEREDOC(scanner) call doesn't work, if we have our
+                               // own partitions for single quoted
+                               // or double quoted strings:
+                               //
+                               // if (lastCharacter == '<' && character == '<') {
+                               // int heredocCharacter = scanner.read();
+                               // if (heredocCharacter == '<') {
+                               // // start of heredoc comment;
+                               // if (readHEREDOC(scanner)) {
+                               // return fTokenHeredoc;
+                               // }
+                               // } else {
+                               // scanner.unread();
+                               // }
+                               // }
+                               if (!isOperator((char) character)) {
+                                       scanner.unread();
+                                       return fToken;
+                               }
+                               if (checkPHPTag(scanner, lastCharacter, character)) {
+                                       return Token.UNDEFINED;
+                               }
+                               do {
+                                       lastCharacter = character;
+                                       character = scanner.read();
+                                       if (checkPHPTag(scanner, lastCharacter, character)) {
+                                               return fToken;
+                                       }
+                                       if (character == ICharacterScanner.EOF) {
+                                               return fToken;
+                                       }
+                               } while (isOperator((char) character));
+                               scanner.unread();
+                               return fToken;
+                       } else {
+                               scanner.unread();
+                               return Token.UNDEFINED;
+                       }
+               }
+
+               // private boolean readHEREDOC(ICharacterScanner scanner) {
+               // // search until heredoc ends
+               // int ch;
+               // StringBuffer buf = new StringBuffer();
+               // char[] heredocIdent;
+               //
+               // ch = scanner.read();
+               // if (!Scanner.isPHPIdentifierStart((char)ch)) {
+               // scanner.unread();
+               // scanner.unread();
+               // return false;
+               // }
+               // while (Scanner.isPHPIdentifierPart((char)ch)) {
+               // buf.append((char)ch);
+               // ch = scanner.read();
+               // }
+               // if (ch==ICharacterScanner.EOF) {
+               // return true;
+               // }
+               // heredocIdent = buf.toString().toCharArray();
+               // while (true) {
+               // ch = scanner.read();
+               // if (ch==ICharacterScanner.EOF) {
+               // return true;
+               // }
+               // if (ch == '\n') { // heredoc could end after a newline
+               // int pos = 0;
+               // while (true) {
+               // if (pos == heredocIdent.length) {
+               // return true;
+               // }
+               // ch = scanner.read(); // ignore escaped character
+               // if (ch != heredocIdent[pos]) {
+               // break;
+               // }
+               // if (ch==ICharacterScanner.EOF) {
+               // return true;
+               // }
+               // pos++;
+               // }
+               // }
+               // }
+               // }
+
+               /**
+                * Check if lastCharacter/character are a PHP start or end token ( &lt;?
+                * ... ?&gt; )
+                *
+                * @param scanner
+                * @param lastCharacter
+                * @param character
+                * @return
+                */
+               private boolean checkPHPTag(ICharacterScanner scanner,
+                               int lastCharacter, int character) {
+                       if (lastCharacter == '<' && character == '?') {
+                               scanner.unread();
+                               scanner.unread();
+                               return true;
+                       } else if (lastCharacter == '?' && character == '>') {
+                               scanner.unread();
+                               scanner.unread();
+                               return true;
+                       }
+                       return false;
+               }
+       }
+
+       protected class AccentStringRule implements IRule {
+
+               /** Token to return for this rule */
+               private final IToken fToken;
+
+               public AccentStringRule(IToken token) {
+                       fToken = token;
+
+               }
+
+               /*
+                * @see org.eclipse.jface.text.rules.IRule#evaluate(org.eclipse.jface.text.rules.ICharacterScanner)
+                */
+               public IToken evaluate(ICharacterScanner scanner) {
+
+                       int character = scanner.read();
+
+                       if (character == '`') {
+
+                               while (character != ICharacterScanner.EOF) {
+                                       character = scanner.read();
+                                       if (character == '\\') {
+                                               character = scanner.read();
+                                       } else if (character == '`') {
+                                               return fToken;
+                                       }
+                               }
+                               scanner.unread();
+                               return Token.UNDEFINED;
+                       } else {
+                               scanner.unread();
+                               return Token.UNDEFINED;
+                       }
+               }
+
+       }
 
-       private static String[] fgKeywords =
-               {
-                       "if",
-                       "elseif",
-                       "else",
-                       "endif",
-                       "for",
-                       "endfor",
-                       "while",
-                       "endwhile",
-                       "switch",
-                       "case",
-                       "endswitch",
-                       "break",
-                       "continue",
-                       "return",
-                       "define",
-                       "include",
-                       "include_once",
-                       "require",
-                       "require_once",
-                       "function",
-                       "class",
-                       "new",
-                       "do",
-                       "old_function",
-                       "default",
-                       "global",
-                       "static",
-                       "foreach",
-                       "endforeach",
-                       "extends",
-                       "empty",
-                       "array",
-                       "isset",
-                       "echo",
-                       "var" };
+       private class PHPWordRule extends WordRule {
+               private StringBuffer fBuffer = new StringBuffer();
 
-       private static String[] fgTypes =
-               {
-                       "COM_invoke",
-                       "COM_load",
-                       "abs",
-                       "accept_connect",
-                       "acos",
-                       "add",
-                       "add",
-                       "add_iovec",
-                       "addaction",
-                       "addcolor",
-                       "addcslashes",
-                       "addentry",
-                       "addfill",
-                       "addshape",
-                       "addslashes",
-                       "addstring",
-                       "addstring",
-                       "align",
-                       "apache_child_terminate",
-                       "apache_lookup_uri",
-                       "apache_lookup_uri",
-                       "apache_note",
-                       "apache_sub_req",
-                       "array_count_values",
-                       "array_diff",
-                       "array_filter",
-                       "array_flip",
-                       "array_intersect",
-                       "array_keys",
-                       "array_map",
-                       "array_merge",
-                       "array_merge_recursive",
-                       "array_multisort",
-                       "array_pad",
-                       "array_pop",
-                       "array_push",
-                       "array_rand",
-                       "array_reduce",
-                       "array_reverse",
-                       "array_search",
-                       "array_shift",
-                       "array_slice",
-                       "array_splice",
-                       "array_sum",
-                       "array_unique",
-                       "array_unshift",
-                       "array_values",
-                       "array_walk",
-                       "arsort",
-                       "asin",
-                       "asort",
-                       "aspell_check",
-                       "aspell_check_raw",
-                       "aspell_new",
-                       "aspell_suggest",
-                       "assert",
-                       "assert_options",
-                       "atan",
-                       "atan2",
-                       "base64_decode",
-                       "base64_encode",
-                       "base_convert",
-                       "basename",
-                       "bcadd",
-                       "bccomp",
-                       "bcdiv",
-                       "bcmod",
-                       "bcmul",
-                       "bcpow",
-                       "bcscale",
-                       "bcsqrt",
-                       "bcsub",
-                       "bin2hex",
-                       "bind",
-                       "bindec",
-                       "bindtextdomain",
-                       "build_iovec",
-                       "bzclose",
-                       "bzcompress",
-                       "bzdecompress",
-                       "bzerrno",
-                       "bzerror",
-                       "bzerrstr",
-                       "bzflush",
-                       "bzopen",
-                       "bzread",
-                       "bzwrite",
-                       "call_user_func",
-                       "call_user_func_array",
-                       "call_user_method",
-                       "call_user_method_array",
-                       "ccvs_add",
-                       "ccvs_auth",
-                       "ccvs_command",
-                       "ccvs_count",
-                       "ccvs_delete",
-                       "ccvs_done",
-                       "ccvs_init",
-                       "ccvs_lookup",
-                       "ccvs_new",
-                       "ccvs_report",
-                       "ccvs_return",
-                       "ccvs_reverse",
-                       "ccvs_sale",
-                       "ccvs_status",
-                       "ccvs_textvalue",
-                       "ccvs_void",
-                       "ceil",
-                       "chdir",
-                       "checkdate",
-                       "checkdnsrr",
-                       "checkdnsrr",
-                       "chgrp",
-                       "chmod",
-                       "chop",
-                       "chown",
-                       "chr",
-                       "chroot",
-                       "chroot",
-                       "chunk_split",
-                       "class_exists",
-                       "clearstatcache",
-                       "close",
-                       "closedir",
-                       "closelog",
-                       "com_get",
-                       "com_propget",
-                       "com_propput",
-                       "com_propset",
-                       "com_set",
-                       "compact",
-                       "confirm_cybermut_compiled",
-                       "confirm_extname_compiled",
-                       "connect",
-                       "connection_aborted",
-                       "connection_status",
-                       "constant",
-                       "convert_cyr_string",
-                       "copy",
-                       "cos",
-                       "count",
-                       "count_chars",
-                       "cpdf_add_annotation",
-                       "cpdf_add_outline",
-                       "cpdf_arc",
-                       "cpdf_begin_text",
-                       "cpdf_circle",
-                       "cpdf_clip",
-                       "cpdf_close",
-                       "cpdf_closepath",
-                       "cpdf_closepath_fill_stroke",
-                       "cpdf_closepath_stroke",
-                       "cpdf_continue_text",
-                       "cpdf_curveto",
-                       "cpdf_end_text",
-                       "cpdf_fill",
-                       "cpdf_fill_stroke",
-                       "cpdf_finalize",
-                       "cpdf_finalize_page",
-                       "cpdf_global_set_document_limits",
-                       "cpdf_import_jpeg",
-                       "cpdf_lineto",
-                       "cpdf_moveto",
-                       "cpdf_newpath",
-                       "cpdf_open",
-                       "cpdf_output_buffer",
-                       "cpdf_page_init",
-                       "cpdf_place_inline_image",
-                       "cpdf_rect",
-                       "cpdf_restore",
-                       "cpdf_rlineto",
-                       "cpdf_rmoveto",
-                       "cpdf_rotate",
-                       "cpdf_rotate_text",
-                       "cpdf_save",
-                       "cpdf_save_to_file",
-                       "cpdf_scale",
-                       "cpdf_set_action_url",
-                       "cpdf_set_char_spacing",
-                       "cpdf_set_creator",
-                       "cpdf_set_current_page",
-                       "cpdf_set_font",
-                       "cpdf_set_font_directories",
-                       "cpdf_set_font_map_file",
-                       "cpdf_set_horiz_scaling",
-                       "cpdf_set_keywords",
-                       "cpdf_set_leading",
-                       "cpdf_set_page_animation",
-                       "cpdf_set_subject",
-                       "cpdf_set_text_matrix",
-                       "cpdf_set_text_pos",
-                       "cpdf_set_text_rendering",
-                       "cpdf_set_text_rise",
-                       "cpdf_set_title",
-                       "cpdf_set_viewer_preferences",
-                       "cpdf_set_word_spacing",
-                       "cpdf_setdash",
-                       "cpdf_setflat",
-                       "cpdf_setgray",
-                       "cpdf_setgray_fill",
-                       "cpdf_setgray_stroke",
-                       "cpdf_setlinecap",
-                       "cpdf_setlinejoin",
-                       "cpdf_setlinewidth",
-                       "cpdf_setmiterlimit",
-                       "cpdf_setrgbcolor",
-                       "cpdf_setrgbcolor_fill",
-                       "cpdf_setrgbcolor_stroke",
-                       "cpdf_show",
-                       "cpdf_show_xy",
-                       "cpdf_stringwidth",
-                       "cpdf_stroke",
-                       "cpdf_text",
-                       "cpdf_translate",
-                       "crack_check",
-                       "crack_closedict",
-                       "crack_getlastmessage",
-                       "crack_opendict",
-                       "crash",
-                       "crc32",
-                       "create_function",
-                       "crypt",
-                       "crypt",
-                       "ctype_alnum",
-                       "ctype_alpha",
-                       "ctype_cntrl",
-                       "ctype_digit",
-                       "ctype_graph",
-                       "ctype_lower",
-                       "ctype_print",
-                       "ctype_punct",
-                       "ctype_space",
-                       "ctype_upper",
-                       "ctype_xdigit",
-                       "curl_close",
-                       "curl_errno",
-                       "curl_error",
-                       "curl_exec",
-                       "curl_getinfo",
-                       "curl_getinfo",
-                       "curl_init",
-                       "curl_setopt",
-                       "curl_version",
-                       "current",
-                       "cv_add",
-                       "cv_auth",
-                       "cv_command",
-                       "cv_count",
-                       "cv_delete",
-                       "cv_done",
-                       "cv_init",
-                       "cv_lookup",
-                       "cv_new",
-                       "cv_report",
-                       "cv_return",
-                       "cv_reverse",
-                       "cv_sale",
-                       "cv_status",
-                       "cv_textvalue",
-                       "cv_void",
-                       "cybercash_base64_decode",
-                       "cybercash_base64_encode",
-                       "cybercash_decr",
-                       "cybercash_encr",
-                       "cybermut_creerformulairecm",
-                       "cybermut_creerreponsecm",
-                       "cybermut_testmac",
-                       "date",
-                       "dba_close",
-                       "dba_delete",
-                       "dba_exists",
-                       "dba_fetch",
-                       "dba_firstkey",
-                       "dba_insert",
-                       "dba_nextkey",
-                       "dba_open",
-                       "dba_optimize",
-                       "dba_popen",
-                       "dba_replace",
-                       "dba_sync",
-                       "dbase_add_record",
-                       "dbase_close",
-                       "dbase_create",
-                       "dbase_delete_record",
-                       "dbase_get_record",
-                       "dbase_get_record_with_names",
-                       "dbase_numfields",
-                       "dbase_numrecords",
-                       "dbase_open",
-                       "dbase_pack",
-                       "dbase_replace_record",
-                       "dblist",
-                       "dbmclose",
-                       "dbmdelete",
-                       "dbmexists",
-                       "dbmfetch",
-                       "dbmfirstkey",
-                       "dbminsert",
-                       "dbmnextkey",
-                       "dbmopen",
-                       "dbmreplace",
-                       "dbx_close",
-                       "dbx_cmp_asc",
-                       "dbx_cmp_desc",
-                       "dbx_connect",
-                       "dbx_error",
-                       "dbx_query",
-                       "dbx_sort",
-                       "dcgettext",
-                       "decbin",
-                       "dechex",
-                       "decoct",
-                       "define",
-                       "define_syslog_variables",
-                       "defined",
-                       "deg2rad",
-                       "delete_iovec",
-                       "dgettext",
-                       "dir",
-                       "dirname",
-                       "diskfreespace",
-                       "display_disabled_function",
-                       "dl",
-                       "domxml_add_root",
-                       "domxml_attributes",
-                       "domxml_children",
-                       "domxml_dumpmem",
-                       "domxml_elem_get_attribute",
-                       "domxml_elem_set_attribute",
-                       "domxml_get_attribute",
-                       "domxml_getattr",
-                       "domxml_new_child",
-                       "domxml_new_xmldoc",
-                       "domxml_node",
-                       "domxml_node_attributes",
-                       "domxml_node_children",
-                       "domxml_node_new_child",
-                       "domxml_node_set_content",
-                       "domxml_node_unlink_node",
-                       "domxml_root",
-                       "domxml_set_attribute",
-                       "domxml_setattr",
-                       "domxml_unlink_node",
-                       "domxml_version",
-                       "doubleval",
-                       "drawarc",
-                       "drawcircle",
-                       "drawcubic",
-                       "drawcubicto",
-                       "drawcurve",
-                       "drawcurveto",
-                       "drawglyph",
-                       "drawline",
-                       "drawlineto",
-                       "each",
-                       "easter_date",
-                       "easter_days",
-                       "end",
-                       "ereg",
-                       "ereg_replace",
-                       "eregi",
-                       "eregi_replace",
-                       "error_log",
-                       "error_reporting",
-                       "escapeshellarg",
-                       "escapeshellcmd",
-                       "exec",
-                       "exit",
-                       "exp",
-                       "explode",
-                       "extension_loaded",
-                       "extract",
-                       "ezmlm_hash",
-                       "ezmlm_hash",
-                       "fbsql",
-                       "fbsql_affected_rows",
-                       "fbsql_autocommit",
-                       "fbsql_close",
-                       "fbsql_commit",
-                       "fbsql_connect",
-                       "fbsql_create_db",
-                       "fbsql_data_seek",
-                       "fbsql_database",
-                       "fbsql_database_password",
-                       "fbsql_db_query",
-                       "fbsql_drop_db",
-                       "fbsql_errno",
-                       "fbsql_error",
-                       "fbsql_fetch_array",
-                       "fbsql_fetch_assoc",
-                       "fbsql_fetch_field",
-                       "fbsql_fetch_lengths",
-                       "fbsql_fetch_object",
-                       "fbsql_fetch_row",
-                       "fbsql_field_flags",
-                       "fbsql_field_len",
-                       "fbsql_field_name",
-                       "fbsql_field_seek",
-                       "fbsql_field_table",
-                       "fbsql_field_type",
-                       "fbsql_free_result",
-                       "fbsql_hostname",
-                       "fbsql_insert_id",
-                       "fbsql_list_dbs",
-                       "fbsql_list_fields",
-                       "fbsql_list_tables",
-                       "fbsql_next_result",
-                       "fbsql_num_fields",
-                       "fbsql_num_rows",
-                       "fbsql_password",
-                       "fbsql_pconnect",
-                       "fbsql_query",
-                       "fbsql_result",
-                       "fbsql_rollback",
-                       "fbsql_select_db",
-                       "fbsql_start_db",
-                       "fbsql_stop_db",
-                       "fbsql_username",
-                       "fbsql_warnings",
-                       "fclose",
-                       "fd_alloc",
-                       "fd_clear",
-                       "fd_dealloc",
-                       "fd_isset",
-                       "fd_set",
-                       "fd_zero",
-                       "fdf_add_template",
-                       "fdf_close",
-                       "fdf_create",
-                       "fdf_get_file",
-                       "fdf_get_status",
-                       "fdf_get_value",
-                       "fdf_next_field_name",
-                       "fdf_open",
-                       "fdf_save",
-                       "fdf_set_ap",
-                       "fdf_set_file",
-                       "fdf_set_flags",
-                       "fdf_set_javascript_action",
-                       "fdf_set_opt",
-                       "fdf_set_status",
-                       "fdf_set_submit_form_action",
-                       "fdf_set_value",
-                       "feof",
-                       "fetch_iovec",
-                       "fflush",
-                       "fgetc",
-                       "fgetcsv",
-                       "fgets",
-                       "fgetss",
-                       "file",
-                       "file_exists",
-                       "fileatime",
-                       "filectime",
-                       "filegroup",
-                       "fileinode",
-                       "filemtime",
-                       "fileowner",
-                       "fileperms",
-                       "filepro",
-                       "filepro_fieldcount",
-                       "filepro_fieldname",
-                       "filepro_fieldtype",
-                       "filepro_fieldwidth",
-                       "filepro_retrieve",
-                       "filepro_rowcount",
-                       "filesize",
-                       "filetype",
-                       "flock",
-                       "floor",
-                       "flush",
-                       "fopen",
-                       "fopenstream",
-                       "fopenstream",
-                       "fpassthru",
-                       "fputs",
-                       "fread",
-                       "free_iovec",
-                       "frenchtojd",
-                       "fribidi_log2vis",
-                       "fscanf",
-                       "fseek",
-                       "fsockopen",
-                       "fstat",
-                       "ftell",
-                       "ftp_cdup",
-                       "ftp_chdir",
-                       "ftp_connect",
-                       "ftp_delete",
-                       "ftp_exec",
-                       "ftp_fget",
-                       "ftp_fput",
-                       "ftp_get",
-                       "ftp_login",
-                       "ftp_mdtm",
-                       "ftp_mkdir",
-                       "ftp_nlist",
-                       "ftp_pasv",
-                       "ftp_put",
-                       "ftp_pwd",
-                       "ftp_quit",
-                       "ftp_rawlist",
-                       "ftp_rename",
-                       "ftp_rmdir",
-                       "ftp_site",
-                       "ftp_size",
-                       "ftp_systype",
-                       "ftruncate",
-                       "func_get_arg",
-                       "func_get_args",
-                       "func_num_args",
-                       "function_exists",
-                       "fwrite",
-                       "get_all_headers",
-                       "get_browser",
-                       "get_cfg_var",
-                       "get_class",
-                       "get_class_methods",
-                       "get_class_vars",
-                       "get_current_user",
-                       "get_declared_classes",
-                       "get_defined_functions",
-                       "get_defined_vars",
-                       "get_extension_funcs",
-                       "get_html_translation_table",
-                       "get_included_files",
-                       "get_loaded_extensions",
-                       "get_magic_quotes_gpc",
-                       "get_magic_quotes_runtime",
-                       "get_meta_tags",
-                       "get_object_vars",
-                       "get_parent_class",
-                       "get_required_files",
-                       "get_resource_type",
-                       "getallheaders",
-                       "getallheaders",
-                       "getascent",
-                       "getascent",
-                       "getcwd",
-                       "getdate",
-                       "getdescent",
-                       "getdescent",
-                       "getenv",
-                       "getheight",
-                       "gethostbyaddr",
-                       "gethostbyaddr",
-                       "gethostbyname",
-                       "gethostbyname",
-                       "gethostbynamel",
-                       "getimagesize",
-                       "getlastmod",
-                       "getleading",
-                       "getleading",
-                       "getmxrr",
-                       "getmxrr",
-                       "getmyinode",
-                       "getmypid",
-                       "getmyuid",
-                       "getpeername",
-                       "getprotobyname",
-                       "getprotobynumber",
-                       "getrandmax",
-                       "getrusage",
-                       "getrusage",
-                       "getservbyname",
-                       "getservbyport",
-                       "getshape1",
-                       "getshape2",
-                       "getsockname",
-                       "getsockopt",
-                       "gettext",
-                       "gettimeofday",
-                       "gettype",
-                       "getwidth",
-                       "getwidth",
-                       "getwidth",
-                       "gmdate",
-                       "gmmktime",
-                       "gmp_abs",
-                       "gmp_add",
-                       "gmp_and",
-                       "gmp_clrbit",
-                       "gmp_cmp",
-                       "gmp_com",
-                       "gmp_div",
-                       "gmp_div_q",
-                       "gmp_div_qr",
-                       "gmp_div_r",
-                       "gmp_divexact",
-                       "gmp_fact",
-                       "gmp_gcd",
-                       "gmp_gcdext",
-                       "gmp_hamdist",
-                       "gmp_init",
-                       "gmp_intval",
-                       "gmp_invert",
-                       "gmp_jacobi",
-                       "gmp_legendre",
-                       "gmp_mod",
-                       "gmp_mul",
-                       "gmp_neg",
-                       "gmp_or",
-                       "gmp_perfect_square",
-                       "gmp_popcount",
-                       "gmp_pow",
-                       "gmp_powm",
-                       "gmp_prob_prime",
-                       "gmp_random",
-                       "gmp_scan0",
-                       "gmp_scan1",
-                       "gmp_setbit",
-                       "gmp_sign",
-                       "gmp_sqrt",
-                       "gmp_sqrtrem",
-                       "gmp_strval",
-                       "gmp_sub",
-                       "gmp_xor",
-                       "gmstrftime",
-                       "gmstrftime",
-                       "gregoriantojd",
-                       "gzclose",
-                       "gzcompress",
-                       "gzdeflate",
-                       "gzencode",
-                       "gzeof",
-                       "gzfile",
-                       "gzgetc",
-                       "gzgets",
-                       "gzgetss",
-                       "gzinflate",
-                       "gzopen",
-                       "gzpassthru",
-                       "gzputs",
-                       "gzread",
-                       "gzrewind",
-                       "gzseek",
-                       "gztell",
-                       "gzuncompress",
-                       "gzwrite",
-                       "header",
-                       "headers_sent",
-                       "hebrev",
-                       "hebrevc",
-                       "hexdec",
-                       "highlight_file",
-                       "highlight_string",
-                       "htmlentities",
-                       "htmlspecialchars",
-                       "hw_array2objrec",
-                       "hw_changeobject",
-                       "hw_children",
-                       "hw_childrenobj",
-                       "hw_close",
-                       "hw_connect",
-                       "hw_connection_info",
-                       "hw_cp",
-                       "hw_deleteobject",
-                       "hw_docbyanchor",
-                       "hw_docbyanchorobj",
-                       "hw_document_attributes",
-                       "hw_document_bodytag",
-                       "hw_document_content",
-                       "hw_document_setcontent",
-                       "hw_document_size",
-                       "hw_dummy",
-                       "hw_edittext",
-                       "hw_error",
-                       "hw_errormsg",
-                       "hw_free_document",
-                       "hw_getanchors",
-                       "hw_getanchorsobj",
-                       "hw_getandlock",
-                       "hw_getcgi",
-                       "hw_getchildcoll",
-                       "hw_getchildcollobj",
-                       "hw_getchilddoccoll",
-                       "hw_getchilddoccollobj",
-                       "hw_getobject",
-                       "hw_getobjectbyftquery",
-                       "hw_getobjectbyftquerycoll",
-                       "hw_getobjectbyftquerycollobj",
-                       "hw_getobjectbyftqueryobj",
-                       "hw_getobjectbyquery",
-                       "hw_getobjectbyquerycoll",
-                       "hw_getobjectbyquerycollobj",
-                       "hw_getobjectbyqueryobj",
-                       "hw_getparents",
-                       "hw_getparentsobj",
-                       "hw_getrellink",
-                       "hw_getremote",
-                       "hw_getremotechildren",
-                       "hw_getsrcbydestobj",
-                       "hw_gettext",
-                       "hw_getusername",
-                       "hw_identify",
-                       "hw_incollections",
-                       "hw_info",
-                       "hw_inscoll",
-                       "hw_insdoc",
-                       "hw_insertanchors",
-                       "hw_insertdocument",
-                       "hw_insertobject",
-                       "hw_mapid",
-                       "hw_modifyobject",
-                       "hw_mv",
-                       "hw_new_document",
-                       "hw_new_document_from_file",
-                       "hw_objrec2array",
-                       "hw_output_document",
-                       "hw_pconnect",
-                       "hw_pipecgi",
-                       "hw_pipedocument",
-                       "hw_root",
-                       "hw_setlinkroot",
-                       "hw_stat",
-                       "hw_unlock",
-                       "hw_who",
-                       "ibase_blob_add",
-                       "ibase_blob_cancel",
-                       "ibase_blob_close",
-                       "ibase_blob_create",
-                       "ibase_blob_echo",
-                       "ibase_blob_get",
-                       "ibase_blob_import",
-                       "ibase_blob_info",
-                       "ibase_blob_open",
-                       "ibase_close",
-                       "ibase_commit",
-                       "ibase_connect",
-                       "ibase_errmsg",
-                       "ibase_execute",
-                       "ibase_fetch_object",
-                       "ibase_fetch_row",
-                       "ibase_field_info",
-                       "ibase_free_query",
-                       "ibase_free_result",
-                       "ibase_num_fields",
-                       "ibase_pconnect",
-                       "ibase_prepare",
-                       "ibase_query",
-                       "ibase_rollback",
-                       "ibase_timefmt",
-                       "ibase_trans",
-                       "icap_create_calendar",
-                       "icap_delete_calendar",
-                       "icap_delete_event",
-                       "icap_fetch_event",
-                       "icap_list_alarms",
-                       "icap_list_events",
-                       "icap_open",
-                       "icap_popen",
-                       "icap_rename_calendar",
-                       "icap_reopen",
-                       "icap_snooze",
-                       "icap_store_event",
-                       "iconv",
-                       "iconv_get_encoding",
-                       "iconv_set_encoding",
-                       "ifx_affected_rows",
-                       "ifx_blobinfile_mode",
-                       "ifx_byteasvarchar",
-                       "ifx_close",
-                       "ifx_connect",
-                       "ifx_copy_blob",
-                       "ifx_create_blob",
-                       "ifx_create_char",
-                       "ifx_do",
-                       "ifx_error",
-                       "ifx_errormsg",
-                       "ifx_fetch_row",
-                       "ifx_fieldproperties",
-                       "ifx_fieldtypes",
-                       "ifx_free_blob",
-                       "ifx_free_char",
-                       "ifx_free_result",
-                       "ifx_get_blob",
-                       "ifx_get_char",
-                       "ifx_getsqlca",
-                       "ifx_htmltbl_result",
-                       "ifx_nullformat",
-                       "ifx_num_fields",
-                       "ifx_num_rows",
-                       "ifx_pconnect",
-                       "ifx_prepare",
-                       "ifx_query",
-                       "ifx_textasvarchar",
-                       "ifx_update_blob",
-                       "ifx_update_char",
-                       "ifxus_close_slob",
-                       "ifxus_create_slob",
-                       "ifxus_free_slob",
-                       "ifxus_open_slob",
-                       "ifxus_read_slob",
-                       "ifxus_seek_slob",
-                       "ifxus_tell_slob",
-                       "ifxus_write_slob",
-                       "ignore_user_abort",
-                       "iis_addserver",
-                       "iis_getdirsecurity",
-                       "iis_getscriptmap",
-                       "iis_getserverbycomment",
-                       "iis_getserverbypath",
-                       "iis_getserverright",
-                       "iis_getservicestate",
-                       "iis_removeserver",
-                       "iis_setappsettings",
-                       "iis_setdirsecurity",
-                       "iis_setscriptmap",
-                       "iis_setserverright",
-                       "iis_startserver",
-                       "iis_startservice",
-                       "iis_stopserver",
-                       "iis_stopservice",
-                       "image2wbmp",
-                       "imagealphablending",
-                       "imagearc",
-                       "imagechar",
-                       "imagecharup",
-                       "imagecolorallocate",
-                       "imagecolorat",
-                       "imagecolorclosest",
-                       "imagecolorclosestalpha",
-                       "imagecolorclosesthwb",
-                       "imagecolordeallocate",
-                       "imagecolorexact",
-                       "imagecolorexactalpha",
-                       "imagecolorresolve",
-                       "imagecolorresolvealpha",
-                       "imagecolorset",
-                       "imagecolorsforindex",
-                       "imagecolorstotal",
-                       "imagecolortransparent",
-                       "imagecopy",
-                       "imagecopymerge",
-                       "imagecopymergegray",
-                       "imagecopyresampled",
-                       "imagecopyresized",
-                       "imagecreate",
-                       "imagecreatefromgif",
-                       "imagecreatefromjpeg",
-                       "imagecreatefrompng",
-                       "imagecreatefromstring",
-                       "imagecreatefromwbmp",
-                       "imagecreatefromxbm",
-                       "imagecreatefromxpm",
-                       "imagecreatetruecolor",
-                       "imagedashedline",
-                       "imagedestroy",
-                       "imageellipse",
-                       "imagefill",
-                       "imagefilledarc",
-                       "imagefilledellipse",
-                       "imagefilledpolygon",
-                       "imagefilledrectangle",
-                       "imagefilltoborder",
-                       "imagefontheight",
-                       "imagefontwidth",
-                       "imagegammacorrect",
-                       "imagegif",
-                       "imageinterlace",
-                       "imagejpeg",
-                       "imageline",
-                       "imageloadfont",
-                       "imagepalettecopy",
-                       "imagepng",
-                       "imagepolygon",
-                       "imagepsbbox",
-                       "imagepscopyfont",
-                       "imagepsencodefont",
-                       "imagepsextendfont",
-                       "imagepsfreefont",
-                       "imagepsloadfont",
-                       "imagepsslantfont",
-                       "imagepstext",
-                       "imagerectangle",
-                       "imagesetbrush",
-                       "imagesetpixel",
-                       "imagesetstyle",
-                       "imagesetthickness",
-                       "imagesettile",
-                       "imagestring",
-                       "imagestringup",
-                       "imagesx",
-                       "imagesy",
-                       "imagetruecolortopalette",
-                       "imagettfbbox",
-                       "imagettftext",
-                       "imagetypes",
-                       "imagewbmp",
-                       "imap_8bit",
-                       "imap_alerts",
-                       "imap_append",
-                       "imap_base64",
-                       "imap_binary",
-                       "imap_body",
-                       "imap_bodystruct",
-                       "imap_check",
-                       "imap_clearflag_full",
-                       "imap_close",
-                       "imap_create",
-                       "imap_createmailbox",
-                       "imap_delete",
-                       "imap_deletemailbox",
-                       "imap_errors",
-                       "imap_expunge",
-                       "imap_fetch_overview",
-                       "imap_fetchbody",
-                       "imap_fetchheader",
-                       "imap_fetchstructure",
-                       "imap_fetchtext",
-                       "imap_get_quota",
-                       "imap_getmailboxes",
-                       "imap_getsubscribed",
-                       "imap_header",
-                       "imap_headerinfo",
-                       "imap_headers",
-                       "imap_last_error",
-                       "imap_list",
-                       "imap_listmailbox",
-                       "imap_listsubscribed",
-                       "imap_lsub",
-                       "imap_mail",
-                       "imap_mail",
-                       "imap_mail_compose",
-                       "imap_mail_copy",
-                       "imap_mail_move",
-                       "imap_mailboxmsginfo",
-                       "imap_mime_header_decode",
-                       "imap_msgno",
-                       "imap_num_msg",
-                       "imap_num_recent",
-                       "imap_open",
-                       "imap_ping",
-                       "imap_popen",
-                       "imap_qprint",
-                       "imap_rename",
-                       "imap_renamemailbox",
-                       "imap_reopen",
-                       "imap_rfc822_parse_adrlist",
-                       "imap_rfc822_parse_headers",
-                       "imap_rfc822_write_address",
-                       "imap_scan",
-                       "imap_scanmailbox",
-                       "imap_search",
-                       "imap_set_quota",
-                       "imap_setflag_full",
-                       "imap_sort",
-                       "imap_status",
-                       "imap_subscribe",
-                       "imap_uid",
-                       "imap_undelete",
-                       "imap_unsubscribe",
-                       "imap_utf7_decode",
-                       "imap_utf7_encode",
-                       "imap_utf8",
-                       "implode",
-                       "in_array",
-                       "ingres_autocommit",
-                       "ingres_close",
-                       "ingres_commit",
-                       "ingres_connect",
-                       "ingres_fetch_array",
-                       "ingres_fetch_object",
-                       "ingres_fetch_row",
-                       "ingres_field_length",
-                       "ingres_field_name",
-                       "ingres_field_nullable",
-                       "ingres_field_precision",
-                       "ingres_field_scale",
-                       "ingres_field_type",
-                       "ingres_num_fields",
-                       "ingres_num_rows",
-                       "ingres_pconnect",
-                       "ingres_query",
-                       "ingres_rollback",
-                       "ini_alter",
-                       "ini_get",
-                       "ini_restore",
-                       "ini_set",
-                       "intval",
-                       "ip2long",
-                       "iptcembed",
-                       "iptcparse",
-                       "ircg_channel_mode",
-                       "ircg_disconnect",
-                       "ircg_html_encode",
-                       "ircg_ignore_add",
-                       "ircg_ignore_del",
-                       "ircg_is_conn_alive",
-                       "ircg_join",
-                       "ircg_kick",
-                       "ircg_lookup_format_messages",
-                       "ircg_msg",
-                       "ircg_nick",
-                       "ircg_nickname_escape",
-                       "ircg_nickname_unescape",
-                       "ircg_notice",
-                       "ircg_part",
-                       "ircg_pconnect",
-                       "ircg_register_format_messages",
-                       "ircg_set_current",
-                       "ircg_topic",
-                       "ircg_whois",
-                       "is_array",
-                       "is_bool",
-                       "is_dir",
-                       "is_double",
-                       "is_executable",
-                       "is_file",
-                       "is_float",
-                       "is_int",
-                       "is_integer",
-                       "is_link",
-                       "is_long",
-                       "is_null",
-                       "is_numeric",
-                       "is_object",
-                       "is_readable",
-                       "is_real",
-                       "is_resource",
-                       "is_scalar",
-                       "is_string",
-                       "is_subclass_of",
-                       "is_uploaded_file",
-                       "is_writable",
-                       "is_writeable",
-                       "java_last_exception_clear",
-                       "java_last_exception_get",
-                       "jddayofweek",
-                       "jdmonthname",
-                       "jdtofrench",
-                       "jdtogregorian",
-                       "jdtojewish",
-                       "jdtojulian",
-                       "jdtounix",
-                       "jewishtojd",
-                       "join",
-                       "jpeg2wbmp",
-                       "juliantojd",
-                       "key",
-                       "krsort",
-                       "ksort",
-                       "labelframe",
-                       "labelframe",
-                       "lcg_value",
-                       "ldap_8859_to_t61",
-                       "ldap_add",
-                       "ldap_bind",
-                       "ldap_close",
-                       "ldap_compare",
-                       "ldap_connect",
-                       "ldap_count_entries",
-                       "ldap_delete",
-                       "ldap_dn2ufn",
-                       "ldap_err2str",
-                       "ldap_errno",
-                       "ldap_error",
-                       "ldap_explode_dn",
-                       "ldap_first_attribute",
-                       "ldap_first_entry",
-                       "ldap_first_reference",
-                       "ldap_free_result",
-                       "ldap_get_attributes",
-                       "ldap_get_dn",
-                       "ldap_get_entries",
-                       "ldap_get_option",
-                       "ldap_get_values",
-                       "ldap_get_values_len",
-                       "ldap_list",
-                       "ldap_mod_add",
-                       "ldap_mod_del",
-                       "ldap_mod_replace",
-                       "ldap_modify",
-                       "ldap_next_attribute",
-                       "ldap_next_entry",
-                       "ldap_next_reference",
-                       "ldap_parse_reference",
-                       "ldap_parse_result",
-                       "ldap_read",
-                       "ldap_rename",
-                       "ldap_search",
-                       "ldap_set_option",
-                       "ldap_t61_to_8859",
-                       "ldap_unbind",
-                       "leak",
-                       "levenshtein",
-                       "link",
-                       "link",
-                       "linkinfo",
-                       "linkinfo",
-                       "listen",
-                       "localeconv",
-                       "localtime",
-                       "log",
-                       "log10",
-                       "long2ip",
-                       "lstat",
-                       "ltrim",
-                       "magic_quotes_runtime",
-                       "mail",
-                       "mail",
-                       "max",
-                       "mcal_append_event",
-                       "mcal_close",
-                       "mcal_create_calendar",
-                       "mcal_date_compare",
-                       "mcal_date_valid",
-                       "mcal_day_of_week",
-                       "mcal_day_of_year",
-                       "mcal_days_in_month",
-                       "mcal_delete_calendar",
-                       "mcal_delete_event",
-                       "mcal_event_add_attribute",
-                       "mcal_event_init",
-                       "mcal_event_set_alarm",
-                       "mcal_event_set_category",
-                       "mcal_event_set_class",
-                       "mcal_event_set_description",
-                       "mcal_event_set_end",
-                       "mcal_event_set_recur_daily",
-                       "mcal_event_set_recur_monthly_mday",
-                       "mcal_event_set_recur_monthly_wday",
-                       "mcal_event_set_recur_none",
-                       "mcal_event_set_recur_weekly",
-                       "mcal_event_set_recur_yearly",
-                       "mcal_event_set_start",
-                       "mcal_event_set_title",
-                       "mcal_fetch_current_stream_event",
-                       "mcal_fetch_event",
-                       "mcal_is_leap_year",
-                       "mcal_list_alarms",
-                       "mcal_list_events",
-                       "mcal_next_recurrence",
-                       "mcal_open",
-                       "mcal_popen",
-                       "mcal_rename_calendar",
-                       "mcal_reopen",
-                       "mcal_snooze",
-                       "mcal_store_event",
-                       "mcal_time_valid",
-                       "mcal_week_of_year",
-                       "mcrypt_cbc",
-                       "mcrypt_cfb",
-                       "mcrypt_create_iv",
-                       "mcrypt_decrypt",
-                       "mcrypt_ecb",
-                       "mcrypt_enc_get_algorithms_name",
-                       "mcrypt_enc_get_block_size",
-                       "mcrypt_enc_get_iv_size",
-                       "mcrypt_enc_get_key_size",
-                       "mcrypt_enc_get_modes_name",
-                       "mcrypt_enc_get_supported_key_sizes",
-                       "mcrypt_enc_is_block_algorithm",
-                       "mcrypt_enc_is_block_algorithm_mode",
-                       "mcrypt_enc_is_block_mode",
-                       "mcrypt_enc_self_test",
-                       "mcrypt_encrypt",
-                       "mcrypt_generic",
-                       "mcrypt_generic_end",
-                       "mcrypt_generic_init",
-                       "mcrypt_get_block_size",
-                       "mcrypt_get_cipher_name",
-                       "mcrypt_get_iv_size",
-                       "mcrypt_get_key_size",
-                       "mcrypt_list_algorithms",
-                       "mcrypt_list_modes",
-                       "mcrypt_module_close",
-                       "mcrypt_module_get_algo_block_size",
-                       "mcrypt_module_get_algo_key_size",
-                       "mcrypt_module_get_supported_key_sizes",
-                       "mcrypt_module_is_block_algorithm",
-                       "mcrypt_module_is_block_algorithm_mode",
-                       "mcrypt_module_is_block_mode",
-                       "mcrypt_module_open",
-                       "mcrypt_module_self_test",
-                       "mcrypt_ofb",
-                       "md5",
-                       "mdecrypt_generic",
-                       "metaphone",
-                       "method_exists",
-                       "mhash",
-                       "mhash_count",
-                       "mhash_get_block_size",
-                       "mhash_get_hash_name",
-                       "mhash_keygen_s2k",
-                       "microtime",
-                       "min",
-                       "ming_setcubicthreshold",
-                       "ming_setscale",
-                       "mkdir",
-                       "mktime",
-                       "move",
-                       "move_uploaded_file",
-                       "movepen",
-                       "movepento",
-                       "moveto",
-                       "moveto",
-                       "moveto",
-                       "msql",
-                       "msql_affected_rows",
-                       "msql_close",
-                       "msql_connect",
-                       "msql_create_db",
-                       "msql_createdb",
-                       "msql_data_seek",
-                       "msql_db_query",
-                       "msql_dbname",
-                       "msql_drop_db",
-                       "msql_dropdb",
-                       "msql_error",
-                       "msql_fetch_array",
-                       "msql_fetch_field",
-                       "msql_fetch_object",
-                       "msql_fetch_row",
-                       "msql_field_flags",
-                       "msql_field_len",
-                       "msql_field_name",
-                       "msql_field_seek",
-                       "msql_field_table",
-                       "msql_field_type",
-                       "msql_fieldflags",
-                       "msql_fieldlen",
-                       "msql_fieldname",
-                       "msql_fieldtable",
-                       "msql_fieldtype",
-                       "msql_free_result",
-                       "msql_freeresult",
-                       "msql_list_dbs",
-                       "msql_list_fields",
-                       "msql_list_tables",
-                       "msql_listdbs",
-                       "msql_listfields",
-                       "msql_listtables",
-                       "msql_num_fields",
-                       "msql_num_rows",
-                       "msql_numfields",
-                       "msql_numrows",
-                       "msql_pconnect",
-                       "msql_query",
-                       "msql_regcase",
-                       "msql_result",
-                       "msql_select_db",
-                       "msql_selectdb",
-                       "msql_tablename",
-                       "mssql_affected_rows",
-                       "mssql_affected_rows",
-                       "mssql_close",
-                       "mssql_close",
-                       "mssql_close",
-                       "mssql_connect",
-                       "mssql_connect",
-                       "mssql_connect",
-                       "mssql_data_seek",
-                       "mssql_data_seek",
-                       "mssql_data_seek",
-                       "mssql_fetch_array",
-                       "mssql_fetch_array",
-                       "mssql_fetch_array",
-                       "mssql_fetch_batch",
-                       "mssql_fetch_field",
-                       "mssql_fetch_field",
-                       "mssql_fetch_field",
-                       "mssql_fetch_object",
-                       "mssql_fetch_object",
-                       "mssql_fetch_object",
-                       "mssql_fetch_row",
-                       "mssql_fetch_row",
-                       "mssql_fetch_row",
-                       "mssql_field_length",
-                       "mssql_field_name",
-                       "mssql_field_seek",
-                       "mssql_field_seek",
-                       "mssql_field_seek",
-                       "mssql_field_type",
-                       "mssql_free_result",
-                       "mssql_free_result",
-                       "mssql_free_result",
-                       "mssql_get_last_message",
-                       "mssql_get_last_message",
-                       "mssql_get_last_message",
-                       "mssql_min_client_severity",
-                       "mssql_min_error_severity",
-                       "mssql_min_error_severity",
-                       "mssql_min_message_severity",
-                       "mssql_min_message_severity",
-                       "mssql_min_server_severity",
-                       "mssql_next_result",
-                       "mssql_num_fields",
-                       "mssql_num_fields",
-                       "mssql_num_fields",
-                       "mssql_num_rows",
-                       "mssql_num_rows",
-                       "mssql_num_rows",
-                       "mssql_pconnect",
-                       "mssql_pconnect",
-                       "mssql_pconnect",
-                       "mssql_query",
-                       "mssql_query",
-                       "mssql_query",
-                       "mssql_result",
-                       "mssql_result",
-                       "mssql_result",
-                       "mssql_rows_affected",
-                       "mssql_select_db",
-                       "mssql_select_db",
-                       "mssql_select_db",
-                       "mt_getrandmax",
-                       "mt_rand",
-                       "mt_srand",
-                       "multcolor",
-                       "muscat_close",
-                       "muscat_get",
-                       "muscat_give",
-                       "muscat_setup",
-                       "muscat_setup_net",
-                       "mysql",
-                       "mysql_affected_rows",
-                       "mysql_close",
-                       "mysql_connect",
-                       "mysql_create_db",
-                       "mysql_createdb",
-                       "mysql_data_seek",
-                       "mysql_db_name",
-                       "mysql_db_query",
-                       "mysql_dbname",
-                       "mysql_drop_db",
-                       "mysql_dropdb",
-                       "mysql_errno",
-                       "mysql_error",
-                       "mysql_escape_string",
-                       "mysql_fetch_array",
-                       "mysql_fetch_assoc",
-                       "mysql_fetch_field",
-                       "mysql_fetch_lengths",
-                       "mysql_fetch_object",
-                       "mysql_fetch_row",
-                       "mysql_field_flags",
-                       "mysql_field_len",
-                       "mysql_field_name",
-                       "mysql_field_seek",
-                       "mysql_field_table",
-                       "mysql_field_type",
-                       "mysql_fieldflags",
-                       "mysql_fieldlen",
-                       "mysql_fieldname",
-                       "mysql_fieldtable",
-                       "mysql_fieldtype",
-                       "mysql_free_result",
-                       "mysql_freeresult",
-                       "mysql_get_client_info",
-                       "mysql_get_host_info",
-                       "mysql_get_proto_info",
-                       "mysql_get_server_info",
-                       "mysql_insert_id",
-                       "mysql_list_dbs",
-                       "mysql_list_fields",
-                       "mysql_list_tables",
-                       "mysql_listdbs",
-                       "mysql_listfields",
-                       "mysql_listtables",
-                       "mysql_num_fields",
-                       "mysql_num_rows",
-                       "mysql_numfields",
-                       "mysql_numrows",
-                       "mysql_pconnect",
-                       "mysql_query",
-                       "mysql_result",
-                       "mysql_select_db",
-                       "mysql_selectdb",
-                       "mysql_tablename",
-                       "mysql_unbuffered_query",
-                       "natcasesort",
-                       "natsort",
-                       "new_xmldoc",
-                       "next",
-                       "nextframe",
-                       "nextframe",
-                       "nl2br",
-                       "notes_body",
-                       "notes_copy_db",
-                       "notes_create_db",
-                       "notes_create_note",
-                       "notes_drop_db",
-                       "notes_find_note",
-                       "notes_header_info",
-                       "notes_list_msgs",
-                       "notes_mark_read",
-                       "notes_mark_unread",
-                       "notes_nav_create",
-                       "notes_search",
-                       "notes_unread",
-                       "notes_version",
-                       "number_format",
-                       "ob_end_clean",
-                       "ob_end_flush",
-                       "ob_get_contents",
-                       "ob_get_length",
-                       "ob_gzhandler",
-                       "ob_iconv_handler",
-                       "ob_implicit_flush",
-                       "ob_start",
-                       "ocibindbyname",
-                       "ocicancel",
-                       "ocicollappend",
-                       "ocicollassign",
-                       "ocicollassignelem",
-                       "ocicolldateappendelem",
-                       "ocicolldateassignelem",
-                       "ocicolldategetelem",
-                       "ocicollgetelem",
-                       "ocicollmax",
-                       "ocicollsize",
-                       "ocicolltrim",
-                       "ocicolumnisnull",
-                       "ocicolumnname",
-                       "ocicolumnprecision",
-                       "ocicolumnscale",
-                       "ocicolumnsize",
-                       "ocicolumntype",
-                       "ocicolumntyperaw",
-                       "ocicommit",
-                       "ocidefinebyname",
-                       "ocierror",
-                       "ociexecute",
-                       "ocifetch",
-                       "ocifetchinto",
-                       "ocifetchstatement",
-                       "ocifreecoll",
-                       "ocifreecursor",
-                       "ocifreedesc",
-                       "ocifreestatement",
-                       "ociinternaldebug",
-                       "ociloadlob",
-                       "ocilogoff",
-                       "ocilogon",
-                       "ocinewcollection",
-                       "ocinewcursor",
-                       "ocinewdescriptor",
-                       "ocinlogon",
-                       "ocinumcols",
-                       "ociparse",
-                       "ociplogon",
-                       "ociresult",
-                       "ocirollback",
-                       "ocirowcount",
-                       "ocisavelob",
-                       "ocisavelobfile",
-                       "ociserverversion",
-                       "ocisetprefetch",
-                       "ocistatementtype",
-                       "ociwritelobtofile",
-                       "octdec",
-                       "odbc_autocommit",
-                       "odbc_binmode",
-                       "odbc_close",
-                       "odbc_close_all",
-                       "odbc_columnprivileges",
-                       "odbc_columns",
-                       "odbc_commit",
-                       "odbc_connect",
-                       "odbc_cursor",
-                       "odbc_do",
-                       "odbc_error",
-                       "odbc_errormsg",
-                       "odbc_exec",
-                       "odbc_execute",
-                       "odbc_fetch_array",
-                       "odbc_fetch_into",
-                       "odbc_fetch_object",
-                       "odbc_fetch_row",
-                       "odbc_field_len",
-                       "odbc_field_name",
-                       "odbc_field_num",
-                       "odbc_field_precision",
-                       "odbc_field_scale",
-                       "odbc_field_type",
-                       "odbc_foreignkeys",
-                       "odbc_free_result",
-                       "odbc_gettypeinfo",
-                       "odbc_longreadlen",
-                       "odbc_next_result",
-                       "odbc_num_fields",
-                       "odbc_num_rows",
-                       "odbc_pconnect",
-                       "odbc_prepare",
-                       "odbc_primarykeys",
-                       "odbc_procedurecolumns",
-                       "odbc_procedures",
-                       "odbc_result",
-                       "odbc_result_all",
-                       "odbc_rollback",
-                       "odbc_setoption",
-                       "odbc_specialcolumns",
-                       "odbc_statistics",
-                       "odbc_tableprivileges",
-                       "odbc_tables",
-                       "open_listen_sock",
-                       "opendir",
-                       "openlog",
-                       "openssl_error_string",
-                       "openssl_free_key",
-                       "openssl_get_privatekey",
-                       "openssl_get_publickey",
-                       "openssl_open",
-                       "openssl_pkcs7_decrypt",
-                       "openssl_pkcs7_encrypt",
-                       "openssl_pkcs7_sign",
-                       "openssl_pkcs7_verify",
-                       "openssl_seal",
-                       "openssl_sign",
-                       "openssl_verify",
-                       "openssl_x509_checkpurpose",
-                       "openssl_x509_free",
-                       "openssl_x509_parse",
-                       "openssl_x509_read",
-                       "ora_bind",
-                       "ora_close",
-                       "ora_columnname",
-                       "ora_columnsize",
-                       "ora_columntype",
-                       "ora_commit",
-                       "ora_commitoff",
-                       "ora_commiton",
-                       "ora_do",
-                       "ora_error",
-                       "ora_errorcode",
-                       "ora_exec",
-                       "ora_fetch",
-                       "ora_fetch_into",
-                       "ora_getcolumn",
-                       "ora_logoff",
-                       "ora_logon",
-                       "ora_numcols",
-                       "ora_numrows",
-                       "ora_open",
-                       "ora_parse",
-                       "ora_plogon",
-                       "ora_rollback",
-                       "orbit_caught_exception",
-                       "orbit_exception_id",
-                       "orbit_exception_value",
-                       "orbit_get_repository_id",
-                       "orbit_load_idl",
-                       "ord",
-                       "output",
-                       "ovrimos_close",
-                       "ovrimos_close_all",
-                       "ovrimos_commit",
-                       "ovrimos_connect",
-                       "ovrimos_cursor",
-                       "ovrimos_exec",
-                       "ovrimos_execute",
-                       "ovrimos_fetch_into",
-                       "ovrimos_fetch_row",
-                       "ovrimos_field_len",
-                       "ovrimos_field_name",
-                       "ovrimos_field_num",
-                       "ovrimos_field_type",
-                       "ovrimos_free_result",
-                       "ovrimos_longreadlen",
-                       "ovrimos_num_fields",
-                       "ovrimos_num_rows",
-                       "ovrimos_prepare",
-                       "ovrimos_result",
-                       "ovrimos_result_all",
-                       "ovrimos_rollback",
-                       "pack",
-                       "parse_ini_file",
-                       "parse_str",
-                       "parse_url",
-                       "passthru",
-                       "pathinfo",
-                       "pclose",
-                       "pdf_add_annotation",
-                       "pdf_add_bookmark",
-                       "pdf_add_launchlink",
-                       "pdf_add_locallink",
-                       "pdf_add_note",
-                       "pdf_add_outline",
-                       "pdf_add_pdflink",
-                       "pdf_add_thumbnail",
-                       "pdf_add_weblink",
-                       "pdf_arc",
-                       "pdf_arcn",
-                       "pdf_attach_file",
-                       "pdf_begin_page",
-                       "pdf_begin_pattern",
-                       "pdf_begin_template",
-                       "pdf_circle",
-                       "pdf_clip",
-                       "pdf_close",
-                       "pdf_close_image",
-                       "pdf_close_pdi",
-                       "pdf_close_pdi_page",
-                       "pdf_closepath",
-                       "pdf_closepath_fill_stroke",
-                       "pdf_closepath_stroke",
-                       "pdf_concat",
-                       "pdf_continue_text",
-                       "pdf_curveto",
-                       "pdf_delete",
-                       "pdf_end_page",
-                       "pdf_end_pattern",
-                       "pdf_end_template",
-                       "pdf_endpath",
-                       "pdf_fill",
-                       "pdf_fill_stroke",
-                       "pdf_findfont",
-                       "pdf_get_buffer",
-                       "pdf_get_font",
-                       "pdf_get_fontname",
-                       "pdf_get_fontsize",
-                       "pdf_get_image_height",
-                       "pdf_get_image_width",
-                       "pdf_get_parameter",
-                       "pdf_get_pdi_parameter",
-                       "pdf_get_pdi_value",
-                       "pdf_get_value",
-                       "pdf_initgraphics",
-                       "pdf_lineto",
-                       "pdf_makespotcolor",
-                       "pdf_moveto",
-                       "pdf_new",
-                       "pdf_open",
-                       "pdf_open_ccitt",
-                       "pdf_open_file",
-                       "pdf_open_gif",
-                       "pdf_open_image",
-                       "pdf_open_image_file",
-                       "pdf_open_jpeg",
-                       "pdf_open_memory_image",
-                       "pdf_open_pdi",
-                       "pdf_open_pdi_page",
-                       "pdf_open_png",
-                       "pdf_open_tiff",
-                       "pdf_place_image",
-                       "pdf_place_pdi_page",
-                       "pdf_rect",
-                       "pdf_restore",
-                       "pdf_rotate",
-                       "pdf_save",
-                       "pdf_scale",
-                       "pdf_set_border_color",
-                       "pdf_set_border_dash",
-                       "pdf_set_border_style",
-                       "pdf_set_char_spacing",
-                       "pdf_set_duration",
-                       "pdf_set_font",
-                       "pdf_set_horiz_scaling",
-                       "pdf_set_info",
-                       "pdf_set_info_author",
-                       "pdf_set_info_creator",
-                       "pdf_set_info_keywords",
-                       "pdf_set_info_subject",
-                       "pdf_set_info_title",
-                       "pdf_set_leading",
-                       "pdf_set_parameter",
-                       "pdf_set_text_pos",
-                       "pdf_set_text_rendering",
-                       "pdf_set_text_rise",
-                       "pdf_set_transition",
-                       "pdf_set_value",
-                       "pdf_set_word_spacing",
-                       "pdf_setcolor",
-                       "pdf_setdash",
-                       "pdf_setflat",
-                       "pdf_setfont",
-                       "pdf_setgray",
-                       "pdf_setgray_fill",
-                       "pdf_setgray_stroke",
-                       "pdf_setlinecap",
-                       "pdf_setlinejoin",
-                       "pdf_setlinewidth",
-                       "pdf_setmatrix",
-                       "pdf_setmiterlimit",
-                       "pdf_setpolydash",
-                       "pdf_setrgbcolor",
-                       "pdf_setrgbcolor_fill",
-                       "pdf_setrgbcolor_stroke",
-                       "pdf_show",
-                       "pdf_show_boxed",
-                       "pdf_show_xy",
-                       "pdf_skew",
-                       "pdf_stringwidth",
-                       "pdf_stroke",
-                       "pdf_translate",
-                       "pfpro_cleanup",
-                       "pfpro_init",
-                       "pfpro_process",
-                       "pfpro_process_raw",
-                       "pfpro_version",
-                       "pfsockopen",
-                       "pg_client_encoding",
-                       "pg_clientencoding",
-                       "pg_close",
-                       "pg_cmdtuples",
-                       "pg_connect",
-                       "pg_dbname",
-                       "pg_end_copy",
-                       "pg_errormessage",
-                       "pg_exec",
-                       "pg_fetch_array",
-                       "pg_fetch_object",
-                       "pg_fetch_row",
-                       "pg_fieldisnull",
-                       "pg_fieldname",
-                       "pg_fieldnum",
-                       "pg_fieldprtlen",
-                       "pg_fieldsize",
-                       "pg_fieldtype",
-                       "pg_freeresult",
-                       "pg_getlastoid",
-                       "pg_host",
-                       "pg_loclose",
-                       "pg_locreate",
-                       "pg_loexport",
-                       "pg_loimport",
-                       "pg_loopen",
-                       "pg_loread",
-                       "pg_loreadall",
-                       "pg_lounlink",
-                       "pg_lowrite",
-                       "pg_numfields",
-                       "pg_numrows",
-                       "pg_options",
-                       "pg_pconnect",
-                       "pg_port",
-                       "pg_put_line",
-                       "pg_result",
-                       "pg_set_client_encoding",
-                       "pg_setclientencoding",
-                       "pg_trace",
-                       "pg_tty",
-                       "pg_untrace",
-                       "php_logo_guid",
-                       "php_sapi_name",
-                       "php_uname",
-                       "phpcredits",
-                       "phpinfo",
-                       "phpversion",
-                       "pi",
-                       "png2wbmp",
-                       "popen",
-                       "pos",
-                       "posix_ctermid",
-                       "posix_getcwd",
-                       "posix_getegid",
-                       "posix_geteuid",
-                       "posix_getgid",
-                       "posix_getgrgid",
-                       "posix_getgrnam",
-                       "posix_getgroups",
-                       "posix_getlogin",
-                       "posix_getpgid",
-                       "posix_getpgrp",
-                       "posix_getpid",
-                       "posix_getppid",
-                       "posix_getpwnam",
-                       "posix_getpwuid",
-                       "posix_getrlimit",
-                       "posix_getsid",
-                       "posix_getuid",
-                       "posix_isatty",
-                       "posix_kill",
-                       "posix_mkfifo",
-                       "posix_setegid",
-                       "posix_seteuid",
-                       "posix_setgid",
-                       "posix_setpgid",
-                       "posix_setsid",
-                       "posix_setuid",
-                       "posix_times",
-                       "posix_ttyname",
-                       "posix_uname",
-                       "pow",
-                       "preg_grep",
-                       "preg_match",
-                       "preg_match_all",
-                       "preg_quote",
-                       "preg_replace",
-                       "preg_replace_callback",
-                       "preg_split",
-                       "prev",
-                       "print_r",
-                       "printer_abort",
-                       "printer_close",
-                       "printer_create_brush",
-                       "printer_create_dc",
-                       "printer_create_font",
-                       "printer_create_pen",
-                       "printer_delete_brush",
-                       "printer_delete_dc",
-                       "printer_delete_font",
-                       "printer_delete_pen",
-                       "printer_draw_bmp",
-                       "printer_draw_chord",
-                       "printer_draw_elipse",
-                       "printer_draw_line",
-                       "printer_draw_pie",
-                       "printer_draw_rectangle",
-                       "printer_draw_roundrect",
-                       "printer_draw_text",
-                       "printer_end_doc",
-                       "printer_end_page",
-                       "printer_get_option",
-                       "printer_list",
-                       "printer_logical_fontheight",
-                       "printer_open",
-                       "printer_select_brush",
-                       "printer_select_font",
-                       "printer_select_pen",
-                       "printer_set_option",
-                       "printer_start_doc",
-                       "printer_start_page",
-                       "printer_write",
-                       "printf",
-                       "pspell_add_to_personal",
-                       "pspell_add_to_session",
-                       "pspell_check",
-                       "pspell_clear_session",
-                       "pspell_config_create",
-                       "pspell_config_ignore",
-                       "pspell_config_mode",
-                       "pspell_config_personal",
-                       "pspell_config_repl",
-                       "pspell_config_runtogether",
-                       "pspell_config_save_repl",
-                       "pspell_new",
-                       "pspell_new_config",
-                       "pspell_new_personal",
-                       "pspell_save_wordlist",
-                       "pspell_store_replacement",
-                       "pspell_suggest",
-                       "putenv",
-                       "putenv",
-                       "qdom_error",
-                       "qdom_tree",
-                       "quoted_printable_decode",
-                       "quotemeta",
-                       "rad2deg",
-                       "rand",
-                       "range",
-                       "rawurldecode",
-                       "rawurlencode",
-                       "read",
-                       "read_exif_data",
-                       "readdir",
-                       "readfile",
-                       "readgzfile",
-                       "readline",
-                       "readline_add_history",
-                       "readline_clear_history",
-                       "readline_completion_function",
-                       "readline_info",
-                       "readline_list_history",
-                       "readline_list_history",
-                       "readline_read_history",
-                       "readline_write_history",
-                       "readlink",
-                       "readlink",
-                       "readv",
-                       "realpath",
-                       "realpath",
-                       "recode",
-                       "recode_file",
-                       "recode_string",
-                       "recv",
-                       "recvfrom",
-                       "recvmsg",
-                       "register_shutdown_function",
-                       "register_tick_function",
-                       "remove",
-                       "remove",
-                       "rename",
-                       "reset",
-                       "restore_error_handler",
-                       "rewind",
-                       "rewinddir",
-                       "rmdir",
-                       "rotate",
-                       "rotateto",
-                       "rotateto",
-                       "round",
-                       "rsort",
-                       "rtrim",
-                       "satellite_caught_exception",
-                       "satellite_exception_id",
-                       "satellite_exception_value",
-                       "satellite_get_repository_id",
-                       "satellite_load_idl",
-                       "save",
-                       "savetofile",
-                       "scale",
-                       "scaleto",
-                       "scaleto",
-                       "select",
-                       "sem_acquire",
-                       "sem_get",
-                       "sem_release",
-                       "send",
-                       "sendmsg",
-                       "sendto",
-                       "serialize",
-                       "session_cache_limiter",
-                       "session_decode",
-                       "session_destroy",
-                       "session_encode",
-                       "session_get_cookie_params",
-                       "session_id",
-                       "session_is_registered",
-                       "session_module_name",
-                       "session_name",
-                       "session_register",
-                       "session_save_path",
-                       "session_set_cookie_params",
-                       "session_set_save_handler",
-                       "session_start",
-                       "session_unregister",
-                       "session_unset",
-                       "session_write_close",
-                       "set_content",
-                       "set_error_handler",
-                       "set_file_buffer",
-                       "set_iovec",
-                       "set_magic_quotes_runtime",
-                       "set_nonblock",
-                       "set_socket_blocking",
-                       "set_time_limit",
-                       "setaction",
-                       "setbackground",
-                       "setbounds",
-                       "setcolor",
-                       "setcolor",
-                       "setcookie",
-                       "setdepth",
-                       "setdimension",
-                       "setdown",
-                       "setfont",
-                       "setfont",
-                       "setframes",
-                       "setframes",
-                       "setheight",
-                       "setheight",
-                       "sethit",
-                       "setindentation",
-                       "setleftfill",
-                       "setleftmargin",
-                       "setline",
-                       "setlinespacing",
-                       "setlocale",
-                       "setmargins",
-                       "setmatrix",
-                       "setname",
-                       "setname",
-                       "setover",
-                       "setrate",
-                       "setratio",
-                       "setrightfill",
-                       "setrightmargin",
-                       "setsockopt",
-                       "setspacing",
-                       "settype",
-                       "setup",
-                       "shell_exec",
-                       "shm_attach",
-                       "shm_detach",
-                       "shm_get_var",
-                       "shm_put_var",
-                       "shm_remove",
-                       "shm_remove_var",
-                       "shmop_close",
-                       "shmop_delete",
-                       "shmop_open",
-                       "shmop_read",
-                       "shmop_size",
-                       "shmop_write",
-                       "show_source",
-                       "shuffle",
-                       "shutdown",
-                       "signal",
-                       "similar_text",
-                       "sin",
-                       "sizeof",
-                       "skewx",
-                       "skewxto",
-                       "skewxto",
-                       "skewy",
-                       "skewyto",
-                       "skewyto",
-                       "sleep",
-                       "snmp_get_quick_print",
-                       "snmp_set_quick_print",
-                       "snmpget",
-                       "snmpget",
-                       "snmprealwalk",
-                       "snmpset",
-                       "snmpwalk",
-                       "snmpwalk",
-                       "snmpwalkoid",
-                       "socket",
-                       "socket_get_status",
-                       "socket_set_blocking",
-                       "socket_set_timeout",
-                       "socket_set_timeout",
-                       "socketpair",
-                       "sort",
-                       "soundex",
-                       "split",
-                       "spliti",
-                       "sprintf",
-                       "sql_regcase",
-                       "sqrt",
-                       "srand",
-                       "sscanf",
-                       "stat",
-                       "str_pad",
-                       "str_repeat",
-                       "str_replace",
-                       "strcasecmp",
-                       "strchr",
-                       "strcmp",
-                       "strcoll",
-                       "strcoll",
-                       "strcspn",
-                       "streammp3",
-                       "strerror",
-                       "strftime",
-                       "strftime",
-                       "strip_tags",
-                       "stripcslashes",
-                       "stripslashes",
-                       "stristr",
-                       "strlen",
-                       "strnatcasecmp",
-                       "strnatcmp",
-                       "strncasecmp",
-                       "strncmp",
-                       "strpos",
-                       "strrchr",
-                       "strrev",
-                       "strrpos",
-                       "strspn",
-                       "strstr",
-                       "strtok",
-                       "strtolower",
-                       "strtotime",
-                       "strtoupper",
-                       "strtr",
-                       "strval",
-                       "substr",
-                       "substr_count",
-                       "substr_replace",
-                       "swf_actiongeturl",
-                       "swf_actiongotoframe",
-                       "swf_actiongotolabel",
-                       "swf_actionnextframe",
-                       "swf_actionplay",
-                       "swf_actionprevframe",
-                       "swf_actionsettarget",
-                       "swf_actionstop",
-                       "swf_actiontogglequality",
-                       "swf_actionwaitforframe",
-                       "swf_addbuttonrecord",
-                       "swf_addcolor",
-                       "swf_closefile",
-                       "swf_definebitmap",
-                       "swf_definefont",
-                       "swf_defineline",
-                       "swf_definepoly",
-                       "swf_definerect",
-                       "swf_definetext",
-                       "swf_endbutton",
-                       "swf_enddoaction",
-                       "swf_endshape",
-                       "swf_endsymbol",
-                       "swf_fontsize",
-                       "swf_fontslant",
-                       "swf_fonttracking",
-                       "swf_getbitmapinfo",
-                       "swf_getfontinfo",
-                       "swf_getframe",
-                       "swf_labelframe",
-                       "swf_lookat",
-                       "swf_modifyobject",
-                       "swf_mulcolor",
-                       "swf_nextid",
-                       "swf_oncondition",
-                       "swf_openfile",
-                       "swf_ortho",
-                       "swf_ortho2",
-                       "swf_perspective",
-                       "swf_placeobject",
-                       "swf_polarview",
-                       "swf_popmatrix",
-                       "swf_posround",
-                       "swf_pushmatrix",
-                       "swf_removeobject",
-                       "swf_rotate",
-                       "swf_scale",
-                       "swf_setfont",
-                       "swf_setframe",
-                       "swf_shapearc",
-                       "swf_shapecurveto",
-                       "swf_shapecurveto3",
-                       "swf_shapefillbitmapclip",
-                       "swf_shapefillbitmaptile",
-                       "swf_shapefilloff",
-                       "swf_shapefillsolid",
-                       "swf_shapelinesolid",
-                       "swf_shapelineto",
-                       "swf_shapemoveto",
-                       "swf_showframe",
-                       "swf_startbutton",
-                       "swf_startdoaction",
-                       "swf_startshape",
-                       "swf_startsymbol",
-                       "swf_textwidth",
-                       "swf_translate",
-                       "swf_viewport",
-                       "swfaction",
-                       "swfbitmap",
-                       "swfbutton",
-                       "swfbutton_keypress",
-                       "swffill",
-                       "swffont",
-                       "swfgradient",
-                       "swfmorph",
-                       "swfmovie",
-                       "swfshape",
-                       "swfsprite",
-                       "swftext",
-                       "swftextfield",
-                       "sybase_affected_rows",
-                       "sybase_affected_rows",
-                       "sybase_close",
-                       "sybase_close",
-                       "sybase_connect",
-                       "sybase_connect",
-                       "sybase_data_seek",
-                       "sybase_data_seek",
-                       "sybase_fetch_array",
-                       "sybase_fetch_array",
-                       "sybase_fetch_field",
-                       "sybase_fetch_field",
-                       "sybase_fetch_object",
-                       "sybase_fetch_object",
-                       "sybase_fetch_row",
-                       "sybase_fetch_row",
-                       "sybase_field_seek",
-                       "sybase_field_seek",
-                       "sybase_free_result",
-                       "sybase_free_result",
-                       "sybase_get_last_message",
-                       "sybase_get_last_message",
-                       "sybase_min_client_severity",
-                       "sybase_min_error_severity",
-                       "sybase_min_message_severity",
-                       "sybase_min_server_severity",
-                       "sybase_num_fields",
-                       "sybase_num_fields",
-                       "sybase_num_rows",
-                       "sybase_num_rows",
-                       "sybase_pconnect",
-                       "sybase_pconnect",
-                       "sybase_query",
-                       "sybase_query",
-                       "sybase_result",
-                       "sybase_result",
-                       "sybase_select_db",
-                       "sybase_select_db",
-                       "symlink",
-                       "symlink",
-                       "syslog",
-                       "system",
-                       "tan",
-                       "tempnam",
-                       "textdomain",
-                       "time",
-                       "tmpfile",
-                       "touch",
-                       "trigger_error",
-                       "trim",
-                       "uasort",
-                       "ucfirst",
-                       "ucwords",
-                       "udm_add_search_limit",
-                       "udm_alloc_agent",
-                       "udm_api_version",
-                       "udm_clear_search_limits",
-                       "udm_errno",
-                       "udm_error",
-                       "udm_find",
-                       "udm_free_agent",
-                       "udm_free_ispell_data",
-                       "udm_free_res",
-                       "udm_get_doc_count",
-                       "udm_get_res_field",
-                       "udm_get_res_param",
-                       "udm_load_ispell_data",
-                       "udm_set_agent_param",
-                       "uksort",
-                       "umask",
-                       "uniqid",
-                       "uniqid",
-                       "unixtojd",
-                       "unlink",
-                       "unpack",
-                       "unregister_tick_function",
-                       "unserialize",
-                       "urldecode",
-                       "urlencode",
-                       "user_error",
-                       "usleep",
-                       "usort",
-                       "utf8_decode",
-                       "utf8_encode",
-                       "var_dump",
-                       "velocis_autocommit",
-                       "velocis_close",
-                       "velocis_commit",
-                       "velocis_connect",
-                       "velocis_exec",
-                       "velocis_fetch",
-                       "velocis_fieldname",
-                       "velocis_fieldnum",
-                       "velocis_freeresult",
-                       "velocis_off_autocommit",
-                       "velocis_result",
-                       "velocis_rollback",
-                       "virtual",
-                       "vpopmail_add_alias_domain",
-                       "vpopmail_add_alias_domain_ex",
-                       "vpopmail_add_domain",
-                       "vpopmail_add_domain_ex",
-                       "vpopmail_add_user",
-                       "vpopmail_auth_user",
-                       "vpopmail_del_domain",
-                       "vpopmail_del_domain_ex",
-                       "vpopmail_del_user",
-                       "vpopmail_error",
-                       "vpopmail_passwd",
-                       "vpopmail_set_user_quota",
-                       "wddx_add_vars",
-                       "wddx_deserialize",
-                       "wddx_packet_end",
-                       "wddx_packet_start",
-                       "wddx_serialize_value",
-                       "wddx_serialize_vars",
-                       "wordwrap",
-                       "write",
-                       "writev",
-                       "xml_error_string",
-                       "xml_get_current_byte_index",
-                       "xml_get_current_column_number",
-                       "xml_get_current_line_number",
-                       "xml_get_error_code",
-                       "xml_parse",
-                       "xml_parse_into_struct",
-                       "xml_parser_create",
-                       "xml_parser_create_ns",
-                       "xml_parser_free",
-                       "xml_parser_get_option",
-                       "xml_parser_set_option",
-                       "xml_set_character_data_handler",
-                       "xml_set_default_handler",
-                       "xml_set_element_handler",
-                       "xml_set_end_namespace_decl_handler",
-                       "xml_set_external_entity_ref_handler",
-                       "xml_set_notation_decl_handler",
-                       "xml_set_object",
-                       "xml_set_processing_instruction_handler",
-                       "xml_set_start_namespace_decl_handler",
-                       "xml_set_unparsed_entity_decl_handler",
-                       "xmldoc",
-                       "xmldocfile",
-                       "xmltree",
-                       "xpath_eval",
-                       "xpath_eval_expression",
-                       "xptr_eval",
-                       "xslt_closelog",
-                       "xslt_create",
-                       "xslt_errno",
-                       "xslt_error",
-                       "xslt_fetch_result",
-                       "xslt_free",
-                       "xslt_openlog",
-                       "xslt_output_begintransform",
-                       "xslt_output_endtransform",
-                       "xslt_process",
-                       "xslt_run",
-                       "xslt_set_base",
-                       "xslt_set_encoding",
-                       "xslt_set_error_handler",
-                       "xslt_set_sax_handler",
-                       "xslt_set_scheme_handler",
-                       "xslt_transform",
-                       "yaz_addinfo",
-                       "yaz_ccl_conf",
-                       "yaz_ccl_parse",
-                       "yaz_close",
-                       "yaz_connect",
-                       "yaz_database",
-                       "yaz_element",
-                       "yaz_errno",
-                       "yaz_error",
-                       "yaz_hits",
-                       "yaz_itemorder",
-                       "yaz_present",
-                       "yaz_range",
-                       "yaz_record",
-                       "yaz_scan",
-                       "yaz_scan_result",
-                       "yaz_search",
-                       "yaz_syntax",
-                       "yaz_wait",
-                       "yp_all",
-                       "yp_cat",
-                       "yp_err_string",
-                       "yp_errno",
-                       "yp_first",
-                       "yp_get_default_domain",
-                       "yp_master",
-                       "yp_match",
-                       "yp_next",
-                       "yp_order",
-                       "zend_logo_guid",
-                       "zend_test_func",
-                       "zend_version",
-                       "zzip_close",
-                       "zzip_closedir",
-                       "zzip_entry_compressedsize",
-                       "zzip_entry_compressionmethod",
-                       "zzip_entry_filesize",
-                       "zzip_entry_name",
-                       "zzip_open",
-                       "zzip_opendir",
-                       "zzip_read",
-                       "zzip_readdir" };
+               protected Map fWordsIgnoreCase = new HashMap();
 
-       private static String[] fgConstants = { "__LINE__", "__FILE__", "true", "false" };
-       private TextAttribute fComment;
-       private TextAttribute fKeyword;
-       private TextAttribute fType;
-       private TextAttribute fString;
-       private PHPColorProvider fColorProvider;
+               public PHPWordRule(IWordDetector detector) {
+                       super(detector, Token.UNDEFINED);
+               }
+
+               public PHPWordRule(IWordDetector detector, IToken defaultToken) {
+                       super(detector, defaultToken);
+               }
+
+               /**
+                * Adds a word and the token to be returned if it is detected.
+                *
+                * @param word
+                *            the word this rule will search for, may not be
+                *            <code>null</code>
+                * @param token
+                *            the token to be returned if the word has been found, may
+                *            not be <code>null</code>
+                */
+               public void addWordIgnoreCase(String word, IToken token) {
+                       Assert.isNotNull(word);
+                       Assert.isNotNull(token);
+
+                       fWordsIgnoreCase.put(word, token);
+               }
+
+               public IToken evaluate(ICharacterScanner scanner) {
+                       int c = scanner.read();
+                       boolean isVariable = false;
+                       boolean isUnderscore = false;
+                       String word;
+                       if (c == '<') {
+                               c = scanner.read();
+                               if (c != '?') {
+                                       scanner.unread();
+                                       scanner.unread();
+                                       return Token.UNDEFINED;
+                               } else {
+                                       c = scanner.read();
+                                       if (c == '=') { // <?=
+                                               return getToken(IPreferenceConstants.PHP_TAG);
+                                       }
+                                       if (c != 'p' && c != 'P') {
+                                               scanner.unread();
+                                               return getToken(IPreferenceConstants.PHP_TAG);
+                                       } else {
+                                               c = scanner.read();
+                                               if (c != 'h' && c != 'H') {
+                                                       scanner.unread();
+                                                       scanner.unread();
+                                                       return getToken(IPreferenceConstants.PHP_TAG);
+                                               } else {
+                                                       c = scanner.read();
+                                                       if (c != 'p' && c != 'P') {
+                                                               scanner.unread();
+                                                               scanner.unread();
+                                                               scanner.unread();
+                                                               return getToken(IPreferenceConstants.PHP_TAG);
+                                                       } else {
+                                                               return getToken(IPreferenceConstants.PHP_TAG);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       if (c == '?') {
+                               c = scanner.read();
+                               if (c == '>') {
+                                       return getToken(IPreferenceConstants.PHP_TAG);
+                               }
+                               scanner.unread();
+                               scanner.unread();
+                               return Token.UNDEFINED;
+                       }
+                       if (fDetector.isWordStart((char) c)) {
+                               if (c == '$') {
+                                       isVariable = true;
+                               }
+                               if (fColumn == UNDEFINED
+                                               || (fColumn == scanner.getColumn() - 1)) {
+
+                                       fBuffer.setLength(0);
+                                       fBuffer.append((char) c);
+                                       c = scanner.read();
+                                       if (c == '_') {
+                                               isUnderscore = true;
+                                       }
+                                       while (c != ICharacterScanner.EOF
+                                                       && fDetector.isWordPart((char) c)) {
+                                               fBuffer.append((char) c);
+                                               c = scanner.read();
+                                       }
+                                       scanner.unread();
+
+                                       if (isVariable) {
+                                               if (isUnderscore) {
+                                                       return getToken(IPreferenceConstants.PHP_VARIABLE_DOLLAR);
+                                               }
+                                               return getToken(IPreferenceConstants.PHP_VARIABLE);
+                                       }
+                                       word = fBuffer.toString();
+                                       IToken token = (IToken) fWords.get(word);
+                                       if (token != null)
+                                               return token;
+
+                                       token = (IToken) fWordsIgnoreCase.get(word.toLowerCase());
+                                       if (token != null)
+                                               return token;
+
+                                       if (fDefaultToken.isUndefined())
+                                               unreadBuffer(scanner);
+
+                                       return fDefaultToken;
+                               }
+                       }
+
+                       scanner.unread();
+                       return Token.UNDEFINED;
+               }
+       }
+
+       // private PHPColorProvider fColorProvider;
+
+       private static String[] fgTokenProperties = {
+                       IPreferenceConstants.PHP_MULTILINE_COMMENT,
+                       IPreferenceConstants.PHP_SINGLELINE_COMMENT,
+                       IPreferenceConstants.PHP_TAG,
+                       IPreferenceConstants.PHP_KEYWORD,
+                       IPreferenceConstants.PHP_FUNCTIONNAME,
+                       IPreferenceConstants.PHP_VARIABLE,
+                       IPreferenceConstants.PHP_VARIABLE_DOLLAR,
+                       IPreferenceConstants.PHP_STRING_DQ,
+                       IPreferenceConstants.PHP_STRING_SQ,
+                       IPreferenceConstants.PHP_TYPE,
+                       IPreferenceConstants.PHP_CONSTANT,
+                       IPreferenceConstants.PHP_DEFAULT,
+                       IPreferenceConstants.PHP_OPERATOR,
+                       IPreferenceConstants.PHP_BRACE_OPERATOR,
+                       IPreferenceConstants.PHP_KEYWORD_RETURN };
 
        /**
-        * Creates a Java code scanner
+        * Creates a PHP code scanner
         */
-       public PHPCodeScanner(PHPColorProvider provider) {
+       // public PHPCodeScanner(JavaColorManager provider, IPreferenceStore store)
+       // {
+       public PHPCodeScanner(IColorManager manager, IPreferenceStore store) {
+               super(manager, store);
+               initialize();
+       }
 
-               IToken keyword = new Token(new TextAttribute(provider.getColor(PHPColorProvider.KEYWORD)));
-               IToken type = new Token(new TextAttribute(provider.getColor(PHPColorProvider.TYPE)));
-               IToken string = new Token(new TextAttribute(provider.getColor(PHPColorProvider.STRING)));
-               IToken comment = new Token(new TextAttribute(provider.getColor(PHPColorProvider.SINGLE_LINE_COMMENT)));
-               IToken multi_comment = new Token(new TextAttribute(provider.getColor(PHPColorProvider.MULTI_LINE_COMMENT)));
-    IToken other = new Token(new TextAttribute(provider.getColor(PHPColorProvider.DEFAULT)));
+       /*
+        * @see AbstractJavaScanner#getTokenProperties()
+        */
+       protected String[] getTokenProperties() {
+               return fgTokenProperties;
+       }
 
+       /*
+        * @see AbstractJavaScanner#createRules()
+        */
+       protected List createRules() {
                List rules = new ArrayList();
-
+               Token token = getToken(IPreferenceConstants.PHP_SINGLELINE_COMMENT);
                // Add rule for single line comments.
-               rules.add(new EndOfLineRule("//", comment)); //$NON-NLS-1$
-    EndOfLineRule endOfLine = new EndOfLineRule("#", comment);
-    endOfLine.setColumnConstraint(0);
-    rules.add(endOfLine);
-    
+               // rules.add(new EndOfLineRule("//", token)); //$NON-NLS-1$
+               // rules.add(new EndOfLineRule("#", token)); //$NON-NLS-1$
                // Add rule for strings and character constants.
-               rules.add(new SingleLineRule("\"", "\"", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$
-               rules.add(new SingleLineRule("'", "'", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$
+               // token = getToken(IPreferenceConstants.PHP_STRING_SQ);
+               // rules.add(new SingleQuoteStringRule(token));
+               // token = getToken(IPreferenceConstants.PHP_STRING_DQ);
+               // rules.add(new DoubleQuoteStringRule(token));
+               rules.add(new AccentStringRule(token));
 
-   // rules.add(new SingleLineRule("//", "//", php_comment));
-    rules.add(new MultiLineRule("/*", "*/", multi_comment));
-    
+               token = getToken(IPreferenceConstants.PHP_MULTILINE_COMMENT);
+               rules.add(new MultiLineRule("/*", "*/", token)); //$NON-NLS-2$ //$NON-NLS-1$
                // Add generic whitespace rule.
                rules.add(new WhitespaceRule(new PHPWhitespaceDetector()));
-
                // Add word rule for keywords, types, and constants.
-               WordRule wordRule = new WordRule(new PHPWordDetector(), other);
-               for (int i = 0; i < fgKeywords.length; i++)
-                       wordRule.addWord(fgKeywords[i], keyword);
-               for (int i = 0; i < fgTypes.length; i++)
-                       wordRule.addWord(fgTypes[i], type);
-               for (int i = 0; i < fgConstants.length; i++)
-                       wordRule.addWord(fgConstants[i], type);
+               token = getToken(IPreferenceConstants.PHP_DEFAULT);
+               PHPWordRule wordRule = new PHPWordRule(new PHPWordDetector(), token);
+
+               Token keyword = getToken(IPreferenceConstants.PHP_KEYWORD);
+               Token functionName = getToken(IPreferenceConstants.PHP_FUNCTIONNAME);
+               Token type = getToken(IPreferenceConstants.PHP_TYPE);
+               Token constant = getToken(IPreferenceConstants.PHP_CONSTANT);
+
+               ArrayList buffer = PHPSyntaxRdr.getSyntaxData();
+               // String strbuffer = null; unused
+               PHPElement elbuffer = null;
+               String name;
+               for (int i = 0; i < buffer.size(); i++) {
+                       // while ((buffer != null)
+                       // && (!buffer.isEmpty()
+                       // && ((elbuffer = (PHPElement) buffer.remove(0)) != null))) {
+                       elbuffer = (PHPElement) buffer.get(i);
+                       if (elbuffer instanceof PHPKeyword) {
+                               name = ((PHPKeyword) elbuffer).getName();
+                               if (!name.equals("return")) {
+                                       wordRule.addWord(name, keyword);
+                               }
+                       } else if (elbuffer instanceof PHPFunction) {
+                               wordRule.addWordIgnoreCase(((PHPFunction) elbuffer).getName(),
+                                               functionName);
+                       } else if (elbuffer instanceof PHPType) {
+                               wordRule.addWord(elbuffer.getName(), type);
+                       } else if (elbuffer instanceof PHPConstant) {
+                               wordRule.addWord(elbuffer.getName(), constant);
+                       }
+               }
+
+               // Add word rule for keyword 'return'.
+               token = getToken(IPreferenceConstants.PHP_KEYWORD_RETURN);
+               wordRule.addWord("return", token);
+
+               // Add rule for operators and brackets (at the end !)
+               rules.add(new OperatorRule(getToken(IPreferenceConstants.PHP_OPERATOR),
+                               getToken(IPreferenceConstants.PHP_BRACE_OPERATOR),
+                               getToken(IPreferenceConstants.PHP_STRING_DQ)));
+
                rules.add(wordRule);
 
-               IRule[] result = new IRule[rules.size()];
-               rules.toArray(result);
-               setRules(result);
+               setDefaultReturnToken(getToken(IPreferenceConstants.PHP_DEFAULT));
+               return rules;
        }
 }