diff --git a/runtime/syntax/phtml.vim b/runtime/syntax/phtml.vim
index 2ff6dd9..646129a 100644
--- a/runtime/syntax/phtml.vim
+++ b/runtime/syntax/phtml.vim
@@ -1,244 +1,6 @@
 " Vim syntax file
-" Language:	phtml PHP 2.0
-" Maintainer:	Lutz Eymers <ixtab@polzin.com>
-" URL:		http://www.isp.de/data/phtml.vim
-" Email:	Subject: send syntax_vim.tgz
-" Last change:	2003 May 11
-"
-" Options	phtml_sql_query = 1 for SQL syntax highligthing inside strings
-"		phtml_minlines = x     to sync at least x lines backwards
+" PHTML used to be the filetype for PHP 2.0.  Now everything is PHP.
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
+if !exists("b:current_syntax")
+  runtime! syntax/php.vim
 endif
-
-if !exists("main_syntax")
-  let main_syntax = 'phtml'
-endif
-
-if version < 600
-  so <sfile>:p:h/html.vim
-else
-  runtime! syntax/html.vim
-  unlet b:current_syntax
-endif
-
-syn cluster htmlPreproc add=phtmlRegionInsideHtmlTags
-
-if exists( "phtml_sql_query")
-  if phtml_sql_query == 1
-    syn include @phtmlSql <sfile>:p:h/sql.vim
-    unlet b:current_syntax
-  endif
-endif
-syn cluster phtmlSql remove=sqlString,sqlComment
-
-syn case match
-
-" Env Variables
-syn keyword phtmlEnvVar SERVER_SOFTWARE SERVER_NAME SERVER_URL GATEWAY_INTERFACE   contained
-syn keyword phtmlEnvVar SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO  contained
-syn keyword phtmlEnvVar PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST contained
-syn keyword phtmlEnvVar REMOTE_ADDR AUTH_TYPE REMOTE_USER CONTEN_TYPE  contained
-syn keyword phtmlEnvVar CONTENT_LENGTH HTTPS HTTPS_KEYSIZE HTTPS_SECRETKEYSIZE  contained
-syn keyword phtmlEnvVar HTTP_ACCECT HTTP_USER_AGENT HTTP_IF_MODIFIED_SINCE  contained
-syn keyword phtmlEnvVar HTTP_FROM HTTP_REFERER contained
-syn keyword phtmlEnvVar PHP_SELF contained
-
-syn case ignore
-
-" Internal Variables
-syn keyword phtmlIntVar phperrmsg php_self contained
-
-" Comment
-syn region phtmlComment		start="/\*" end="\*/"  contained contains=phtmlTodo
-
-" Function names
-syn keyword phtmlFunctions  Abs Ada_Close Ada_Connect Ada_Exec Ada_FetchRow contained
-syn keyword phtmlFunctions  Ada_FieldName Ada_FieldNum Ada_FieldType contained
-syn keyword phtmlFunctions  Ada_FreeResult Ada_NumFields Ada_NumRows Ada_Result contained
-syn keyword phtmlFunctions  Ada_ResultAll AddSlashes ASort BinDec Ceil ChDir contained
-syn keyword phtmlFunctions  AdaGrp ChMod ChOwn Chop Chr ClearStack ClearStatCache contained
-syn keyword phtmlFunctions  closeDir CloseLog Cos Count Crypt Date dbList  contained
-syn keyword phtmlFunctions  dbmClose dbmDelete dbmExists dbmFetch dbmFirstKey contained
-syn keyword phtmlFunctions  dbmInsert dbmNextKey dbmOpen dbmReplace DecBin DecHex contained
-syn keyword phtmlFunctions  DecOct doubleval Echo End ereg eregi ereg_replace contained
-syn keyword phtmlFunctions  eregi_replace EscapeShellCmd Eval Exec Exit Exp contained
-syn keyword phtmlFunctions  fclose feof fgets fgetss File fileAtime fileCtime contained
-syn keyword phtmlFunctions  fileGroup fileInode fileMtime fileOwner filePerms contained
-syn keyword phtmlFunctions  fileSize fileType Floor Flush fopen fputs FPassThru contained
-syn keyword phtmlFunctions  fseek fsockopen ftell getAccDir GetEnv getHostByName contained
-syn keyword phtmlFunctions  getHostByAddr GetImageSize getLastAcess contained
-syn keyword phtmlFunctions  getLastbrowser getLastEmail getLastHost getLastMod contained
-syn keyword phtmlFunctions  getLastref getLogDir getMyInode getMyPid getMyUid contained
-syn keyword phtmlFunctions  getRandMax getStartLogging getToday getTotal GetType contained
-syn keyword phtmlFunctions  gmDate Header HexDec HtmlSpecialChars ImageArc contained
-syn keyword phtmlFunctions  ImageChar ImageCharUp IamgeColorAllocate  contained
-syn keyword phtmlFunctions  ImageColorTransparent ImageCopyResized ImageCreate contained
-syn keyword phtmlFunctions  ImageCreateFromGif ImageDestroy ImageFill contained
-syn keyword phtmlFunctions  ImageFilledPolygon ImageFilledRectangle contained
-syn keyword phtmlFunctions  ImageFillToBorder ImageGif ImageInterlace ImageLine contained
-syn keyword phtmlFunctions  ImagePolygon ImageRectangle ImageSetPixel  contained
-syn keyword phtmlFunctions  ImageString ImageStringUp ImageSX ImageSY Include contained
-syn keyword phtmlFunctions  InitSyslog intval IsSet Key Link LinkInfo Log Log10 contained
-syn keyword phtmlFunctions  LosAs Mail Max Md5 mi_Close mi_Connect mi_DBname contained
-syn keyword phtmlFunctions  mi_Exec mi_FieldName mi_FieldNum mi_NumFields contained
-syn keyword phtmlFunctions  mi_NumRows mi_Result Microtime Min MkDir MkTime msql contained
-syn keyword phtmlFunctions  msql_connect msql_CreateDB msql_dbName msql_DropDB contained
-syn keyword phtmlFunctions  msqlFieldFlags msql_FieldLen msql_FieldName contained
-syn keyword phtmlFunctions  msql_FieldType msql_FreeResult msql_ListDBs contained
-syn keyword phtmlFunctions  msql_Listfields msql_ListTables msql_NumFields contained
-syn keyword phtmlFunctions  msql_NumRows msql_RegCase msql_Result msql_TableName contained
-syn keyword phtmlFunctions  mysql mysql_affected_rows mysql_close mysql_connect contained
-syn keyword phtmlFunctions  mysql_CreateDB mysql_dbName mysqlDropDB  contained
-syn keyword phtmlFunctions  mysql_FieldFlags mysql_FieldLen mysql_FieldName contained
-syn keyword phtmlFunctions  mysql_FieldType mysql_FreeResult mysql_insert_id contained
-syn keyword phtmlFunctions  mysql_listDBs mysql_Listfields mysql_ListTables contained
-syn keyword phtmlFunctions  mysql_NumFields mysql_NumRows mysql_Result  contained
-syn keyword phtmlFunctions  mysql_TableName Next OctDec openDir OpenLog  contained
-syn keyword phtmlFunctions  Ora_Bind Ora_Close Ora_Commit Ora_CommitOff contained
-syn keyword phtmlFunctions  Ora_CommitOn Ora_Exec Ora_Fetch Ora_GetColumn contained
-syn keyword phtmlFunctions  Ora_Logoff Ora_Logon Ora_Parse Ora_Rollback Ord  contained
-syn keyword phtmlFunctions  Parse_str PassThru pclose pg_Close pg_Connect contained
-syn keyword phtmlFunctions  pg_DBname pg_ErrorMessage pg_Exec pg_FieldName contained
-syn keyword phtmlFunctions  pg_FieldPrtLen pg_FieldNum pg_FieldSize  contained
-syn keyword phtmlFunctions  pg_FieldType pg_FreeResult pg_GetLastOid pg_Host contained
-syn keyword phtmlFunctions  pg_NumFields pg_NumRows pg_Options pg_Port  contained
-syn keyword phtmlFunctions  pg_Result pg_tty phpInfo phpVersion popen pos pow contained
-syn keyword phtmlFunctions  Prev PutEnv QuoteMeta Rand readDir ReadFile ReadLink contained
-syn keyword phtmlFunctions  reg_Match reg_replace reg_Search Rename Reset return  contained
-syn keyword phtmlFunctions  rewind rewindDir RmDir rSort SetCookie SetErrorReporting contained
-syn keyword phtmlFunctions  SetLogging SetShowInfo SetType shl shr Sin Sleep contained
-syn keyword phtmlFunctions  Solid_Close Solid_Connect Solid_Exec Solid_FetchRow contained
-syn keyword phtmlFunctions  Solid_FieldName Solid_FieldNum Solid_FreeResult  contained
-syn keyword phtmlFunctions  Solid_NumFields Solid_NumRows Solid_Result Sort contained
-syn keyword phtmlFunctions  Spundtex Sprintf Sqrt Srand strchr strtr  contained
-syn keyword phtmlFunctions  StripSlashes strlen strchr strstr strtok strtolower contained
-syn keyword phtmlFunctions  strtoupper strval substr sybSQL_CheckConnect contained
-syn keyword phtmlFunctions  sybSQL_DBUSE sybSQL_Connect sybSQL_Exit contained
-syn keyword phtmlFunctions  sybSQL_Fieldname sybSQL_GetField sybSQL_IsRow  contained
-syn keyword phtmlFunctions  sybSQL_NextRow sybSQL_NumFields sybSQL_NumRows contained
-syn keyword phtmlFunctions  sybSQL_Query sybSQL_Result sybSQL_Result sybSQL_Seek contained
-syn keyword phtmlFunctions  Symlink syslog System Tan TempNam Time Umask UniqId contained
-syn keyword phtmlFunctions  Unlink Unset UrlDecode UrlEncode USleep Virtual contained
-syn keyword phtmlFunctions  SecureVar contained
-
-" Conditional
-syn keyword phtmlConditional  if else elseif endif switch endswitch contained
-
-" Repeat
-syn keyword phtmlRepeat  while endwhile contained
-
-" Repeat
-syn keyword phtmlLabel  case default contained
-
-" Statement
-syn keyword phtmlStatement  break return continue exit contained
-
-" Operator
-syn match phtmlOperator  "[-=+%^&|*!]" contained
-syn match phtmlOperator  "[-+*/%^&|]=" contained
-syn match phtmlOperator  "/[^*]"me=e-1 contained
-syn match phtmlOperator  "\$" contained
-syn match phtmlRelation  "&&" contained
-syn match phtmlRelation  "||" contained
-syn match phtmlRelation  "[!=<>]=" contained
-syn match phtmlRelation  "[<>]" contained
-
-" Identifier
-syn match  phtmlIdentifier "$\h\w*" contained contains=phtmlEnvVar,phtmlIntVar,phtmlOperator
-
-
-" Include
-syn keyword phtmlInclude  include contained
-
-" Definesag
-syn keyword phtmlDefine  Function contained
-
-" String
-syn region phtmlString keepend matchgroup=None start=+"+ skip=+\\\\\|\\"+  end=+"+ contains=phtmlIdentifier,phtmlSpecialChar,@phtmlSql contained
-
-" Number
-syn match phtmlNumber  "-\=\<\d\+\>" contained
-
-" Float
-syn match phtmlFloat  "\(-\=\<\d+\|-\=\)\.\d\+\>" contained
-
-" SpecialChar
-syn match phtmlSpecialChar "\\[abcfnrtyv\\]" contained
-syn match phtmlSpecialChar "\\\d\{3}" contained contains=phtmlOctalError
-syn match phtmlSpecialChar "\\x[0-9a-fA-F]\{2}" contained
-
-syn match phtmlOctalError "[89]" contained
-
-
-syn match phtmlParentError "[)}\]]" contained
-
-" Todo
-syn keyword phtmlTodo TODO Todo todo contained
-
-" Parents
-syn cluster phtmlInside contains=phtmlComment,phtmlFunctions,phtmlIdentifier,phtmlConditional,phtmlRepeat,phtmlLabel,phtmlStatement,phtmlOperator,phtmlRelation,phtmlString,phtmlNumber,phtmlFloat,phtmlSpecialChar,phtmlParent,phtmlParentError,phtmlInclude
-
-syn cluster phtmlTop contains=@phtmlInside,phtmlInclude,phtmlDefine,phtmlParentError,phtmlTodo
-syn region phtmlParent	matchgroup=Delimiter start="(" end=")" contained contains=@phtmlInside
-syn region phtmlParent	matchgroup=Delimiter start="{" end="}" contained contains=@phtmlInside
-syn region phtmlParent	matchgroup=Delimiter start="\[" end="\]" contained contains=@phtmlInside
-
-syn region phtmlRegion keepend matchgroup=Delimiter start="<?" skip=+(.*>.*)\|".\{-}>.\{-}"\|/\*.\{-}>.\{-}\*/+ end=">" contains=@phtmlTop
-syn region phtmlRegionInsideHtmlTags keepend matchgroup=Delimiter start="<?" skip=+(.*>.*)\|/\*.\{-}>.\{-}\*/+ end=">" contains=@phtmlTop contained
-
-" sync
-if exists("phtml_minlines")
-  exec "syn sync minlines=" . phtml_minlines
-else
-  syn sync minlines=100
-endif
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_phtml_syn_inits")
-  if version < 508
-    let did_phtml_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink phtmlComment		Comment
-  HiLink phtmlString		String
-  HiLink phtmlNumber		Number
-  HiLink phtmlFloat		Float
-  HiLink phtmlIdentifier	Identifier
-  HiLink phtmlIntVar		Identifier
-  HiLink phtmlEnvVar		Identifier
-  HiLink phtmlFunctions		Function
-  HiLink phtmlRepeat		Repeat
-  HiLink phtmlConditional	Conditional
-  HiLink phtmlLabel		Label
-  HiLink phtmlStatement		Statement
-  HiLink phtmlType		Type
-  HiLink phtmlInclude		Include
-  HiLink phtmlDefine		Define
-  HiLink phtmlSpecialChar	SpecialChar
-  HiLink phtmlParentError	Error
-  HiLink phtmlOctalError	Error
-  HiLink phtmlTodo		Todo
-  HiLink phtmlOperator		Operator
-  HiLink phtmlRelation		Operator
-
-  delcommand HiLink
-endif
-
-let b:current_syntax = "phtml"
-
-if main_syntax == 'phtml'
-  unlet main_syntax
-endif
-
-" vim: ts=8
