XXXXX
C/C++
XXXXX
C#/.net
XXXXX
js
java
java
开发导航 开发导航 www.endv.cn
天云

123

内容

1介绍

GeSHi 正是这个缩写代表: 通用的语法高亮显示 。 只要 当你有一个语言文件几乎任何计算机语言——无论是一个 脚本语言、面向对象、标记或者介于两者之间的任何东西 GeSHi 可以 突出! GeSHi 非常流行——相同的源可以突出 多次以多种方式了——即使相同来源不同的语言。 GeSHi 输出XHTML严格的代码 ,并能 利用 CSS 为了节省大量的输出。 所有这一切的成本是什么? 你需要 PHP 。 这是所有!

1.1特性

这里有一些突出的特点 GeSHi :

程序在 PHP :
GeSHi 完全被编码在 PHP 。 这意味着,你有 PHP ,你 可以有 GeSHi ! 几乎任何免费的高手写的支持 PHP GeSHi 工作好 PHP 安装> 4.3.0 
支持多种语言:
GeSHi 有超过 100年 语言,包括 PHP HTML CSS 、Java、C、口齿不清、 XML 、Perl、Python、 ASM 和更多!
XHTML的输出:
GeSHi 产生符合XHTML输出,使用样式表,所以你不需要担心 GeSHi 毁了你的声称完美标准部门;)
高度可定制的:
GeSHi 允许你改变输出的样式,使用 CSS 类,使用外部 样式表,使用行编号,改变输出的情况下关键词…的例子不胜枚举,!
灵活:
不幸的是, GeSHi 很负载/时间密集的大型的代码块。 然而,你要速度吗? 你不喜欢关掉任何特性,事先拌一个样式表和使用 CSS 类来减少输出和更多 很容易平衡,适合你。

这是你得到的 GeSHi ——最好的语法高亮显示为web世界!

1.2对 GeSHi

GeSHi 开始的国防部 phpBB 论坛系统,使突出的 语言比可用的(可以大致估计完全0;))。 然而,它很快衍生成 整个项目。 但现在它已经被释放,在国防部的工作正在继续 对于phpBB ——希望许多论坛系统、博客和其他网络系统。

多个系统使用 GeSHi 现在,包括:

GeSHi 最初的工作是什么 奈杰尔McNie 。 这个项目后来交给 本尼鲍曼 。 其他方面的帮助 GeSHi 同时,他们提到的 谢谢 文件。

1.3学分

许多人帮助 GeSHi 通过创建语言文件,是否提交bug 报告,提出新想法或者简单地指出一个新的想法我错过了。 所有 这些人帮助建设一个更美好 GeSHi ,你可以看到他们的 谢谢 文件。

你想要你的名字在这个名单? 为什么不做一个语言文件,或者提交一个有效的错误吗? 或者帮我的 添加功能我不能让我的头,或建议一个新特性,甚至端口 GeSHi 板块的语言吗? 有很多你可以做什么来帮助,我需要它:)

1.4反馈

我需要你的反馈! 任何 你不得不说很好,无论是一个查询, 祝贺你,错误报告或投诉,我不在乎! 我想让这个软件 最好的是,我需要你的帮助! 你可以通过以下方式联系我:

记住,任何帮助我感激:)

2基础

在本节中,您将了解一下 GeSHi ,它是如何工作的,它使用什么,如何安装它,以及如何使用 执行基本的突出。

2.1获得 GeSHi 工作

如果你正在读这并没有 GeSHi ,这是一个问题;)。 那么,如何得到它?

2.1.1需求

GeSHi 需要安装如下:

  • PHP 。 它与任何其他未经测试4.4.X以下。 我希望尽快扩大这个范围。 我没有看到的原因 它不会与任何版本的工作 PHP 安装以上4.3.0。
  • 大约2 mb的空间 。 实际的脚本很小——大约150 k,但大多数的大小 从语言的大量文件(超过100)。 如果你推动空间,确保你不上传 你的服务器 文档/ 或 contrib / 目录,您可能希望不遗漏任何语言文件 把你的幻想。

正如您可以看到的,需求是非常小的。 如果 GeSHi 不为你工作在一个特定版本的吗 PHP ,让 我知道为什么我会修复它。

2.1.2下载 GeSHi

有几种方法可以得到的一个副本 GeSHi 。 第一个和最容易的方法是 参观 http://qbnz.com/highlighter/downloads.php 获得最新的版本。 这是合适的特别是当你打算使用 GeSHi 在一个生产网站上 或者需要一个完美的稳定复制操作。

如果你有更复杂的或需要实现的功能就在最近 你可以考虑找 GeSHi 通过下载通过SVN。 有多种方法 为此,每一个都有自己的优点和缺点。 我们的封面 SVN的不同位置你可以下载:

如果你选择正确的为你做一个快速SVN目录 svn co .) SVNPATH美元 geshi 在哪里 美元 SVNPATH 是上面的路径之一,期望的版本 GeSHi 将 下载到一个名为“geshi”的子目录。 如果你有一个版本的 GeSHi 你可以在安装如下所示。

2.1.3提取 GeSHi

包进来 . zip gz 和 .tar.bz2 格式,所以没有抱怨是否可用 你。 * nix用户可能想要的 gz 或 .tar.bz2 和windows用户可能想要的 . zip 。 直接从SVN和那些幸运地下载它甚至不需要去提取 GeSHi 

提取 GeSHi 在Linux中( gz ):

  1. 打开一个壳
  2. cd 归档文件所在的目录
  3. 类型 焦油 -xzvf 文件名 在哪里 (文件名) 是档案的名称(通常 geshi x.x.tar.gz——1. )
  4. GeSHi 将提取到其自己的目录吗

提取 GeSHi 在Windows( . zip ):

  1. 打开资源管理器
  2. 导航到档案所在的目录
  3. 提取档案。 您所使用的方法取决于您的配置。 有些人可以右键单击 归档文件并选择“提取”,其他人可能必须把档案放它在一个提取程序。

中提取的 . zip 你需要一个解压缩程序 解压缩 在Linux中,或7 - zip,WinZip,解压缩的软件或类似的Windows。

2.1.4安装 GeSHi

安装 GeSHi 是一件简单的事,甚至对那些最新呢 PHP 。 没有技巧。 诚实的!

GeSHi 只不过是一个 PHP 类与相关支持文件的语言。 你熟悉的人 PHP 就可以 想多么简单的安装将会是:简单地将它复制到包含路径的地方。 你可以把它无论你 就像在这包括路径。 我建议你把语言文件的子目录,包括路径 也许geshi相同的子目录中。 php。 记住这条路 为以后。

如果你不知道一个包括路径是什么,别担心。 简单的复制 GeSHi 你的网络服务器。 举个例子,你说 地点是在 http://mysite.com/myfolder ,你可以复制 GeSHi 你的网站目录结构是这样的:

http://mysite.com/myfolder/geshi/[language files]
http://mysite.com/myfolder/geshi.php

或者你可以把它放在任何子目录:

http://mysite.com/myfolder/includes/geshi/[language files]
http://mysite.com/myfolder/includes/geshi.php
警告:

当使用 GeSHi 在活动网站,唯一需要的目录 geshi / 子目录。 这两个 contrib / 和 文档/ 是 价值,而且,有些人发现,其中一个文件在contrib安全漏洞1.0.7.3(固定)。 我建议你删除这些目录从任何网站他们生活。

2.2基本用法

使用 GeSHi 是非常容易的。 这是一个简单的例子:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
28
//
// Include the GeSHi library//
include_once 'geshi.php'//// Define some source to highlight, a language to use
// and the path to the language files//
 $source = '$foo = 45;
for ( $i = 1; $i < $foo; $i++ ){
  echo "$foo\n";  --$foo;
}';$language = 'php';
 //
// Create a GeSHi object//
 $geshi = new GeSHi($source, $language);
 //
// And echo the result!//
echo $geshi->parse_code();

正如你所看到的,只有三个真正重要的行:

include_once “geshi.php” )

这条线包括 GeSHi 类的使用

geshi美元 新 GeSHi 美元的来源 美元的语言 ;

这一行创建一个新的 GeSHi 对象,源和高亮显示您想要使用的语言。

回声 geshi美元 - > parse_code ;

这一行写出结果:)

所以你可以看到,简单使用 GeSHi 真的很容易。 新建一个 GeSHi 对象和代码!

从版本1.0.2中,包含的是一个函数 GeSHi 被称为 geshi_highlight 。 这具体表现为php 函数 中将 行为——你要做的就是通过它您想要使用的语言和亮点 路径以及源语言文件。 下面是一些例子:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
// Simply echo the highlighted code
geshi_highlight($source, 'php', $path)// Get the code back, for use later$code = geshi_highlight($source, 'java', $path, true);
 // Check if there is an error with parsing this code
 ob_start();
$result = geshi_highlight($source, 'perl', $path);$code = ob_get_contents();
 ob_end_clean();
if ( !$result ){
    // There was an error with highlighting...}
else{
    // All OK :)}

然而,这些都是很简单的例子,甚至不开始覆盖所有的高级特性 GeSHi 。 如果你想了解更多,继续第三节:高级功能。

3高级功能

这部分文档的高级特性 GeSHi ——利用严格模式 CSS 类,改变风格, 禁用强调一些东西等等。

在这一节中有许多代码片段。 所有的这些,你应该假设 GeSHi 图书馆已经 包括, GeSHi 对象创建和引用的变量 geshi美元 。 通常情况下, 源、语言和路径均服从使用。

3.1代码的容器

的 代码的容器 有一个基本的布局影响您的代码在你开始之前的风格。 是什么 代码容器? 周围的一些标记你的代码来控制它。 默认情况下,代码包围 由一个 前 ,但你也可以指定一个 div 

的 前 头是默认的。 如果您熟悉 HTML 你会知道呈现空白 由一个“是” 前 元素。 你是,如果你使用的优势 前 的空白 你使用会出现在源究竟是怎样的,更重要的是 GeSHi 不需要添加一个整体 很多 br 的和不换行空格( )代码缩进。 这节省了 你的源代码(和你宝贵的游客等待时间和带宽)。

但是如果你不喜欢 前 或在您的浏览器中看起来愚蠢的无论什么风格你尝试 适用于它或类似的东西,你可能想要使用一个 div 代替。 一个 div 将 导致更多的源- GeSHi 要插入空格标记,但作为回报,你可以包装行代码 ,否则你的浏览器的水平滚动条出现。 当然, div 你可以 不 如果你请包装线。 的萤光笔演示 GeSHi 主页 使用 div 因为这个原因的方法。

在这一阶段没有一个选项来包装中的代码 代码 标签(除非你使用函数 geshi_highlight ),部分原因是不一致的和意想不到的方式的东西 代码 标签是 突出显示。 除此之外, 代码 是内联元素。 但是这可能成为一个选项在未来的版本中。

的 GeSHi 1.0.7.2有一个新的头类型,指定的代码不应该用任何东西。

另一个请求了 GeSHi 1.0.7.20强迫 GeSHi 创建一个块突出显示 源,即使这并不是必要的,因此风格应用于的输出 GeSHi 可以直接影响 代码只即使页眉和页脚。

改变/将标题设置为使用,你所说的 set_header_type 方法。 它有一个必需的参数 定义了容器类型。 可以是:

geshi美元 - > set_header_type GESHI_HEADER_DIV ;

把一个 div 同时,代码和linenumbers。 空格被转换为 序列(即一个空格和html实体不换行空格)保持indendation水平 在机智。 选项卡,您可以手动转换 定义标签 。 线是自动包装。 Linenumbers创建使用有序列表。

geshi美元 - > set_header_type GESHI_HEADER_PRE ;

和linenumbers包装代码 前 容器。 这种方式空格保持原样,因此 那么这个头产生更少的开销 GESHI_HEADER_DIV 头型。 因为linenumbers仍 使用有序列表创建这个头型 无效的 HTML 

geshi美元 - > set_header_type GESHI_HEADER_PRE_VALID ;
可用1.0.8以来

linenumbers被禁用时,这个行为就像 GESHI_HEADER_PRE 。 然而,在其他情况下 div 用于包装的代码和linenumbers吗 前 放入列表吗 项( 李 )。 这意味着略大 HTML 输出相比, GESHI_HEADER_PRE ,但 输出是 有效的 HTML 

geshi美元 - > set_header_type GESHI_HEADER_PRE_TABLE ;
可用1.0.8以来

再一次 div 标签包装输出。 这次虽然没有有序列表是用来创建一个有序列表, 而是我们使用一个表有两个细胞在单个行。 左边的细胞包含一个 前 标签拥有所有 linenumbers。 第二个单元格包含突出显示的代码,还裹着 前 标记,就像 GESHI_HEADER_PRE 

这个生产 有效的 HTML 和工作在恶劣的Firefox和其它基于Gecko的选择行为 浏览器,看 科幻小说# 1651996 为更多的信息。

geshi美元 - > set_header_type GESHI_HEADER_NONE ;
可用1.0.7.2以来

没有添加包装器。

这些都是你应该通过唯一的参数 set_header_type 。 通过其他可能导致不一致 在用作容器(虽然它的代码 应该 简单地使用一个 前 )。 最好不要冒这个险。

注意:

GESHI_HEADER_DIV、GESHI_HEADER_PRE等 常量 ,所以不要把它们放在字符串!

警告:

的默认样式 前 和 div 会有所不同 ,特别是如果你使用 行号!

我发现一个 前 结果比为一个小的代码 div ,你 应该纠正这种差异通过使用吗 set_overall_style 如果你需要。 但要注意这一点 如果你改变头型的区别!

3.2行号

GeSHi 有能力向代码中添加行号(看演示可用吗 http://qbnz.com/highlighter/demo.php 看看可以实现)。 行号是一个伟大的方式让你的代码看起来专业,特别是如果你使用 的行号功能。

有多种方法来突出显示行号,但没有人是完美的。 各种方式的强调 行号 GeSHi 本身实现了两种不同的方法,但允许你 顺便说一下它生成的代码行号自己以后如果有必要,但在这种情况下。

最简单的方法是使用 ol 标签生成行号,但是 虽然这是最简单的一个与这个时候有一个大缺点 使用基于gecko引擎的浏览器火狐或Konqueror等。 在这些浏览器 这种方法将选择行号的代码或选择将包括额外的标记。

另一种方法已经实现1.0.8释放 GeSHi 与 GESHI_HEADER_PRE_TABLE 头型。 当使用这个头型呈现除了源代码行号 表中单元格而实际的来源是格式化的 GESHI_HEADER_PRE 头已被使用。 这种方法适用于Firefox浏览器和其他gecko核心到目前为止虽然极端的保健 必须采取应用样式时,源代码窗口有一些字体吗 大胆的字体是不同的高度比正常或斜体文本fontface相同。

3.2.1使行号

强调与行号源,你所说的 enable_line_numbers 方法:

geshi美元 - > enable_line_numbers 美元的标志 在哪里 美元的标志 是下列之一:

  • GESHI_NORMAL_LINE_NUMBERS ——使用法线编号
  • GESHI_FANCY_LINE_NUMBERS ——使用花哨的行编号
  • GESHI_NO_LINE_NUMBERS ——关闭行号(默认)

正常的行号意味着你为它们指定一个样式,这风格被应用到所有人。 的行号 意味着你可以为每个n指定一个不同的风格 th 行号。 你改变n的值(默认5):

geshi美元 - > enable_line_numbers GESHI_FANCY_LINE_NUMBERS 37 ;

第二个参数是不用于任何其他模式。 设置它 使用正常的行号是一样的简单。 设置它 华丽的风格适用于每一个行号。

注意:

上面的值是常数,所以不要把它们放在字符串!

3.2.2样式行号

的 GeSHi 1.0.2,添加行号使用有序列表。 这解决了行号的老问题 用于代码风格继承样式。 同时,这解决了一个重要的问题选择代码。 为 例,行号看起来不错,但是当你去选择你的浏览器中的代码复制吗? 你有行 数字! 这不是一件好事,但幸运的是这个问题现在解决了。 价格是什么? 不幸的是, 整体风格的继承方式/改变了用于那些熟悉1.0.1,还有 更多 HTML 参与。 所以仔细思考这些事情之前启用行号。

现在,到如何风格行号:

风格设置行号使用 set_line_style 方法:

geshi美元 - > set_line_style 背景:# fcfcfc;” ;

如果您正在使用的行号模式中,你通过第二个字符串为n的风格 th 行号:

geshi美元 - > set_line_style 背景:# fcfcfc;” 背景:# f0f0f0;” ;

第二个风格没有影响,如果你不使用的行号模式。

默认情况下,将覆盖当前的样式风格。 添加一个布尔“true”后您所指定的风格把他们与当前的样式:

PHP代码
1
23
4
$geshi->set_line_style('background: red;', true);
 // or, for fancy line numbers
$geshi->set_line_style('background: red;', 'background: blue;', true);
注意:

由于缺陷与Firefox的问题应该是固定1.0.2中再次出现另一种形式的Firefox 包括额外的文本\标记成明文版本的网页副本。 这有时是有用的(实际上是 使用纯文本版本的文档),但更多时候是很烦人的。 到目前为止是最佳实践 不要使用行号,或页面的访问者提供一个纯文本版本的源代码。 要了解更多 有看吗 SF.net BugTracker问题# 1651996 。 这将有希望是固定的 GeSHi 版本1.2 或者只要Firefox为webdevelopers提供足够的控制这一特性的方法,以先到期者作准!

警告:

当您设置行号风格,代码将继承那些风格! 这是主要问题1.0.2中出来 释放。 如果你想让你的代码风格以可预测的方式,你必须调用 set_code_style 方法来纠正这个问题。

还要注意不能应用背景颜色的行号,除非你使用 set_overall_style 。 这就是你的风格:

  1. 使用 set_overall_style 风格整个代码块。 例如,您可以设置边界 款式/颜色,任何利润和填充等使用这种方法。 此外: 设置背景颜色 所有的行号使用这种方法。

  2. 使用 set_line_style 风格的前景行号。 例如,您可以设置颜色, 重量、字体、行号使用这种方法的填充等。

  3. 使用 set_code_style 显式重写的样式设置行号使用 set_line_style 。 例如,如果你设置大胆的行号(甚至如果你只设置 的行号风格大胆的),和你没有真正想要的代码是大胆的,你确定 那 粗细 正常的 在你通过样式表规则 set_code_style 

    这是一个重大变化 GeSHi 1.0.1——确保你熟悉,并确保你检查 任何代码升级时你已经与1.0.1样式,以确保没有什么不好的事发生。

3.2.3选择开始数

的 GeSHi 1.0.2中,您现在可以使行号从任何数量,而不是1。 这个特性很有用 如果你强调代码从一个文件在一个特定的行号,文件,作为一个额外的指导 那些视图代码。 设置行号通过调用 start_line_numbers_at 方法:

geshi美元 - > start_line_numbers_at 美元的数量 ;

美元的数量 必须是一个正整数(或零)。 如果不是, GeSHi 无论如何都要把它。

如果你没有行号启用,这将没有影响。

警告:

虽然我想 GeSHi XHTML严格合规,此功能将法规遵循(然而过渡 法规遵循仍然)。 这是因为只有广泛支持的方式改变行号的开始值 通过使用 开始= "数量" 的属性 ol 标签。 虽然 CSS 提供一种机制来吗 这样做,只有支持Opera 7.5及以上版本(甚至Firefox支持这个)。

3.3使用 CSS 

使用 CSS 突出你的代码,而不是内嵌样式是definate奖金。 它不仅是兼容的 (w3c XHTML 2.0是不以为然的样式属性),但结果输出代码——少得多了 节省90%——这使得*大*不同调制解调器上那些不幸的人!

3.3.1启用 CSS 

默认情况下, GeSHi 不使用的类,所以很容易就赶紧干一些突出显示的代码,如果你需要 担心样式表。 然而,如果你是一个更有组织的,您应该使用类;)。 将 使用的类,你所说的 enable_classes 方法:

geshi美元 - > enable_classes ;

如果你想关闭类由于某种原因后:

geshi美元 - > enable_classes 假 ;

如果类时启用 parse_code 叫,然后合成源将使用吗 CSS 类的 输出,否则它会内联的样式。 使用类的优点是伟大的——减少源 很明显,更重要的是您可以使用一个样式表数不同的强调在同一页。 在 事实上,您甚至可以使用一个外部样式表和链接,节省更多的时间和源(因为样式表 是由浏览器缓存)。

注意:

内联风格和符号有问题突出在1.0.7.21补充道。 如果你能你应该 因此把 CSS 课程,以避免这些问题。 尽管最新改写1.0.8应该解决大部分的问题。

警告:

这应该是第一个方法创建一个新的后你叫 GeSHi 对象! 这样,不同的其他方法 可以在你选择使用正确的类。 理论上,你可以调用这个方法之前解析 代码,但是这可能会导致意外的行为。

3.3.2设置 CSS 类和ID

你可以设置一个整体 CSS 类和id代码。 这是一个很好的功能,允许您使用相同的 样式表对许多不同的代码片段。 你叫 set_overall_class 和 set_overall_id 完成:

PHP代码
1
2
$geshi->set_overall_class('mycode');
$geshi->set_overall_id('dk48ck');

默认名称是语言使用的名字。 这意味着你可以使用一个样式表 来源,使用相同的语言,顺便就意味着你可能不会太频繁地调用这些方法。

CSS id应该是独特的,你应该使用它们。 基本上,你可以指定一个ID为您的代码 然后使用ID来强调代码以独特的方式。 你会做一个明确的代码块 想要以不同的方式强调(参见下面部分要使用其中的样式表代码为例)。

注意:

的 GeSHi 1.0.8类名总是包括语言名称用于突出显示。

3.3.3样式表为您的代码

使用的另一半 CSS 类使用类的样式表。 GeSHi 使它很容易 得到一个样式表为您的代码,有一个简单的方法调用:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
$geshi->enable_classes();
 // Here we have code that will spit out a header for
// a stylesheet. For example: 
echo '<html><head><title>Code</title>
<style type="text/css"><!--';
// Echo out the stylesheet for this code blockecho $geshi->get_stylesheet();
 // And continue echoing the page
 echo '-->
</style></head><body>';

的 get_stylesheet 方法对你的代码在一个简单的调用样式表。 所有您需要做的 是输出到正确的位置。 你也可以看到,您甚至不需要启用类使用的 样式表nessecary——但是没有启用类但使用样式表可能会导致问题。

默认情况下, get_stylesheet 试图回声最少的代码成为可能。 虽然目前没有 检查某一词汇的甚至在源,你可以预期在未来这一特性。 至少在 然而,现在如果您显式禁用的强调某些词汇的,或禁用行号,相关 CSS 不会被输出。 这可能是一件坏事也许你要使用的样式表块 代码,有些行号,启用了一些词汇的来源有残疾。 或者你 包括建立一个外部样式表和希望所有词汇学。 所以为了解决这个问题,你这样做:

geshi美元 - > get_stylesheet 假 ;

这种转变经济模式,所有的样式表将被输出。

现在让我们说,你有几个片段代码,使用相同的语言。 在大多数人你不介意他们 同样强调了(事实上,这正是你想要的)但在其中一个你喜欢的来源 突出显示的不同。 如何做:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
48
// assume path is the default "geshi/" relative to the current directory
 $geshi1 = new GeSHi($source1, $lang);
$geshi2 = new GeSHi($source2, $lang)$geshi3 = new GeSHi($source3, $lang)// Turn classes on for all sources$geshi1->enable_classes();
 $geshi2->enable_classes();
$geshi3->enable_classes()// Make $geshi3 unique$geshi3->set_overall_id('different');
  
//// Methods are called on $geshi3 to change styles...
// 
echo '<html><head><title>Code</title>
 <style type="text/css">
<!--';
 // Get the nessecary stylesheets
echo $geshi1->get_stylesheet()echo $geshi3->get_stylesheet()echo '--></style></head>
<body>' echo 'Code snippet 1:';
echo $geshi1->parse_code();echo 'Code snippet 2 (same highlighting as 1):';
 echo $geshi2->parse_code();
echo 'Code snippet 3 (DIFFERENT highlighting):';echo $geshi3->parse_code();
  
echo '</body></html>';

版本1.0.2中之前,您需要设置类的代码你想成为独一无二的空字符串。 这 限制被移除在版本1.0.2——如果你的ID设置一块代码,所有的样式都将做基础 此ID。

3.3.4使用外部样式表

外部样式表可以减少更突出一些源所需的代码数量。 但是有一些 缺点。 使用外部样式表,它是由你来链接到你的文档,正常 以下 HTML :

HTML代码
1
23
<html>
<head><link rel="stylesheet" type="text/css" href="url_to_stylesheet.css" />

你把你的外部样式表 CSS 声明为您的代码。 然后确保你使用正确的类(使用 set_overall_class 为了确保这一点),这应该工作很好。

这个方法很好如果你不介意源总是被高亮显示相同的(尤其是如果你做一个 插件一个论坛/ wiki /其他系统,使用外部样式表是一个好主意!)。 它节省了少量的代码 你的带宽,它是相对容易改变样式表应该需要。 然而,使用这将呈现 代码的方法,改变风格没用,因为样式表不再是被动态 生成的。 你仍然可以禁用某些动态词汇学的突出,然而。

注意:

版本1.0.2, GeSHi 附带了一个 contrib / 目录,它包含一个脚本用于创建“向导” 一个样式表。 虽然这个脚本绝不是一个完整的解决方案,它将创建必要的规则 基本的词汇学——评论,例如字符串。 事情没有包含在向导包含了任何的正则表达式 语言使用( PHP 和 XML 两种语言使用它们),keyword-link风格。 然而,这个脚本 应该采取一些单调乏味的工作做一个外部样式表。 期待一个更好的版本 脚本在1.2版本!

3.4改变风格

的一个更强大的功能 GeSHi 是能够动态地改变输出的风格。 为什么是链接 无聊的风格语言的作者组成? 你可以改变突出显示的代码,几乎每一个方面 甚至能说的东西是否需要强调。

如果你困惑于“风格”,您可能希望有一个快速教程所以你知道你能做什么 他们。 结账的主页 CSS 在 http://www.w3.org/Style/CSS 

3.4.1整体风格

输出的代码 GeSHi 是在一个 div 或者一个 前 (一节题为“ 代码容器”),这可能是风格。

$ geshi - > set_overall_style('…… 风格…”); 风格是一个字符串包含有效的在哪里 CSS 声明。 默认情况下,这些样式覆盖当前的风格,但你可以改变这个通过添加第二个参数:

$ geshi - > set_overall_style('颜色:蓝色; ”,真正的); 默认样式“文风”无论任何并不突出。 同样,你可以使用更高级的风格,像位置:(固定|相对)等,因为 div 前 是一个块级元素。

注意:

记住,一个 div 在默认情况下会比一个更大的字体大小 前 要讨论的部分 “容器”的代码 

3.4.2行号风格

您可能希望将部分(样式行号)在阅读本节之前[1]。

版本1.0.2,生成行号的方式是不同的,因此他们风格的方式 不同。 特别是,现在你不能设置的背景风格奇特的行号不同 正常的行号。

行号样式设置使用方法 set_line_style :

geshi美元 - > set_line_style style1美元 style2美元 ;

style1美元 默认的风格行号,然后呢 style2美元 的风格华丽的行号。

警告:

事情已经改变因为1.0.1 ! 这个注意是 非常 重要,请确保你之前检查两次 抱怨行号!

因为做的有序列表 HTML 通常,真的没有一种实际的风格 数字 在列表中。 我骗了多少 GeSHi ——我已经可以使用了 CSS 的风格 前景 的 行号。 因此,你可以改变颜色,字体大小和类型,和填充。 如果你想 有一个漂亮的背景,你呢 必须 使用 set_overall_style 要做到这一点,和使用 set_code_style 实际的代码风格! 这是在上述章节中解释道: 样式行号 

此外,风格华丽的行号 现在的区别正常的风格和你想要的风格吗 为了实现 。 例如,在 GeSHi 之前1.0.2中你可能已经做了风格行号:

geshi美元 - > set_line_style 颜色:红色; 粗细:大胆的; 的颜色:绿色; 粗细:大胆 ;

现在你可以这样做:

geshi美元 - > set_line_style 颜色:红色; 粗细:大胆的; 颜色:绿色; ;

的 粗细 大胆的 会自动完成华丽的风格。 这实际上是一个小的 保存代码,但可能对任何人使用1.0.1混淆的区别。

3.4.3设置关键字的风格

也许最常规的改变你的风格将使一组关键字,为了改变风格 一个特定的设置,你必须知道什么叫做第一集。 集编号从1。 通常,设置1 包含关键词等 如果 而 做 为 开关 等,设置2包含 零 假 真正的 等,集3 包含函数内嵌到语言( 回声 htmlspecialchars函数 等在 PHP )和4包含数据类型和设置 相似的变量修饰符: int 双 真正的 静态 等等。但是这些事情都不是固定不变的,和你应该 检查语言文件,看看你想要的关键。 有一个熟悉的语言文件绝对a + 使用它。

为一组关键字改变风格,调用 set_keyword_group_style 方法:

geshi美元 - > set_keyword_group_style 美元集团 美元的风格 ;

在哪里 美元集团 是一组和改变风格吗 美元的风格 是一个字符串包含的风格 适用于这个群体。

默认情况下,将覆盖当前的样式风格。 添加一个布尔 真正的 在您所指定的风格 把它们与当前样式:

geshi美元 - > set_keyword_group_style 的颜色:白色; 真正的 ;

3.4.4设置评论风格

改变风格的评论组,调用 set_comments_style 方法:

geshi美元 - > set_comments_style 美元集团 美元的风格 ;

在哪里 美元集团 是一个号码对应一个单行的评论,或者字符串 “多” 来 指定多行注释:

PHP代码
1
2
$geshi->set_comments_style(1, 'font-style: italic;');
$geshi->set_comments_style('MULTI', 'display: hidden;');

默认情况下,将覆盖当前的样式风格。 添加一个布尔 真正的 在您所指定的风格 把它们与当前样式:

geshi美元 - > set_comments_style 的粗细:100; 真正的 ;

注意:

在评论1.0.7.22一种新的叫做“COMMENT_REGEXP”已被添加。 这些都是通过设置单处理 行注释风格。

3.4.5设置其他风格

GeSHi 可以突出许多其他方面的来源不仅仅是关键词和评论。 字符串、数字、方法 和支架等也都可以被高亮显示。 下面是相关的方法:

PHP代码
1
23
45
67
$geshi->set_escape_characters_style($styles[, $preserve_defaults]);
$geshi->set_symbols_style($styles[, $preserve_defaults])$geshi->set_strings_style($styles[, $preserve_defaults]);$geshi->set_numbers_style($styles[, $preserve_defaults]);
$geshi->set_methods_style($key, $styles[, $preserve_defaults]);$geshi->set_regexps_style($key, $styles[, $preserve_defaults]);

美元的风格 是一个字符串包含有效的样式表声明,而 preserve_defaults美元 应设置 来 真正的 如果你想让你的风格与以前的风格。 在的情况下 set_methods_style , 你应该选择一组设定的风格,检查语言文件的数量为每个“对象分配器”使用。

这样是可能的 set_method_style 引入了一个新的参数 set_symbols_style 也允许您选择的符号,你想改变你 风格。 geshi美元 - > set_symbols_style 美元的风格 preserve_defaults美元 美元集团 如果第三个参数是不 鉴于组0。 而且你应该注意任何变化组0也反映在括号中 风格,即一个直通电话 set_bracket_style 是由。

注意:

自 GeSHi 1.0.8多个样式支持字符串和数字,尽管API并不提供完整的访问。

3.5大小写敏感性和汽车外壳

控制输出源的情况下是一件容易的事 GeSHi 。 你可以控制哪些关键字转换 情况下,同时控制关键字是否检查以区分大小写的方式。

3.5.1 Auto-Caps / NoCaps

Auto-Caps / NoCaps是一个漂亮的小功能,利用或小写自动某些词汇学时 风格。 我涉足QuickBASIC方言的基本闻名capatalisation,和SQL是另一回事 语言使用上限可读性而闻名。

改变情况下词汇学中呈现,你所说的 set_case_keywords 方法:

geshi美元 - > set_case_keywords caps_modifier美元 ;

有效的值传递给这个方法:

  • GESHI_CAPS_NO_CHANGE ——不改变的情况下任何词汇学,离开,因为他们被发现
  • GESHI_CAPS_UPPER ——大写所有词汇学
  • GESHI_CAPS_LOWER ——小写词汇学
警告:

当我说“词汇的”,我的意思是“关键词”。 任何 关键字在 任何 关键词数组将使用这个选项修改! 这是一个小面积的不灵活性1.2.X我希望修复。

我怀疑这只会被用来指定 GESHI_CAPS_NO_CHANGE 关掉变容二极管等语言SQL 和基本变量,就像这样:

PHP代码
1
2
$geshi = new GeSHi($source, 'sql');
$geshi->set_case_keywords(GESHI_CAPS_NO_CHANGE); // don't want keywords capatalised

尽管如此,它可以用于一些有趣的效果:

PHP代码
1
23
4
$geshi = new GeSHi($source, 'java');
// Anyone who's used java knows how picky it is about CapitalLetters...$geshi->set_case_keywords(GESHI_CAPS_LOWER);
// No *way* the source will look right now ;)

3.5.2设定区分大小写

一些语言,比如 PHP 不介意什么情况下函数名和关键字,而其他人,像Java一样,依赖 这样吹毛求疵维持他们的坏名声;)。 在任何情况下,您可以使用 set_case_sensitivity 改变一个特定的关键字的情况下敏感组的默认值:

geshi美元 - > set_case_sensitivity 美元的关键 美元的敏感性 ;

在哪里 美元的关键 是关键的你希望改变情况下sensitivness(看到语言文件了吗 在这种语言), 美元的敏感性 是一个布尔值- 真正的 如果关键字是大小写敏感的, 假 如果不是。

3.6改变源语言,配置选项

如果你想改变源需要强调,或语言。 或者如果你想指定 那些在你已经创建了一个基本的字段 GeSHi 对象? 好吧,这就是这些方法。

3.6.1更改源代码

改变源代码,你所说的 set_source 方法:

geshi美元 - > set_source 美元新源 ;

例子:

PHP代码
1
23
45
67
8
$geshi = new GeSHi($source1, 'php');
 // Method calls to specify various options...
 $code1 = $geshi->parse_code();
 $geshi->set_source($source2);
$code2 = $geshi->parse_code();

操作改变语言

如果你想要改变强调使用的语言吗? 就叫 set_language :

geshi美元 - > set_language “newlanguage” ;

例子:

PHP代码
1
23
45
67
89
10
$geshi = new GeSHi($source, 'php');
 $code = $geshi->parse_code();
 // Highlight GeSHi's output
$geshi->set_source($code)$geshi->set_language('html4strict');$geshi->enable_classes(false);
echo $geshi->parse_code();

的 GeSHi 1.0.5,您可以使用该方法 load_from_file 从文件加载和语言的源代码。 仅仅通过这个方法一个文件名,它将尝试加载源和设置语言。

geshi美元 - > load_from_file file_name美元 美元的查找 ;

file_name美元 是文件名称使用, 美元的查找 是一个可选参数,其中包含一个查找 数组用于决定选择哪种语言。 您可以使用它来覆盖 GeSHi 的默认查找数组,它 你可能不包含文件的扩展之后,或者您的扩展,但在一个不同的吗 语言。 查找数组的形式:

PHP代码
1
23
4
array(
   'lang_name' => array('extension', 'extension', ...),   'lang_name' ...
);

此外,您可以使用方法 get_language_name_from_extension 如果你需要将文件扩展名 一个有效的语言的名字。 这个方法将返回空字符串如果找不到匹配的查询,和 就像 load_from_file 它接受一个可选的第二个参数包含一个查找数组中。

注意:

名字是不区分大小写的,他们将被转换成小写匹配语言文件。 所以,如果你 语言文件,记住它在较低的情况下应该有个名字。

注意:

你传递给这个方法是一个语言文件的名称,减去。 php扩展。 如果你在写一个插件 对于一个特定的应用程序,它由你以某种方式将用户输入转换为一个有效的语言的名字。

注意:

自 GeSHi 1.0.8这个函数不重置语言设置为一个已经加载的语言。 如果你想要 强调代码在同一个语言使用不同的设置添加可选的 force_reset美元 参数 :

geshi美元 - > set_language “语言” 真正的 ;

警告:

GeSHi 包括 年代的语言文件,所以要小心以确保用户无法通过有些奇怪 语言的名字包括任何旧脚本! GeSHi 尝试条无效的字符的语言名称,但是 你应该做你自己。 特别是语言文件总是小写, 字母数字字符,破折号或下划线在他们的名字。

至少,带“/”字符的语言的名字。

3.6.3改变语言的道路

如果突然间你想使用语言从当前文件从一个不同的目录 语言文件位置? 你叫的 set_language_path 方法:

geshi美元 - > set_language_path newpath美元 ;

不管路径末尾有斜杠后与否,只有它指向一个有效的文件夹。 如果没有,那是你的坏运气,)

3.6.4更改字符集

注意:

虽然 GeSHi 本身不需要知道确切的来源你的字符集 将需要设置这个选项在处理多字节字符可以发生来源。 的 GeSHi 1.0.7.18内部的重写 htmlspecialchars函数 使用 由于这个函数的一个安全缺陷,是应用补丁的即使在最近的版本和PHP4 PHP5 < 5.2。 虽然这并不再影响需要字符集是必需的 的 GeSHi 1.0.8妥善处理多字节字符(如,在一个转义字符)。

注意:

的 GeSHi 1.0.8默认已经更改为utf - 8字符集。

1.0.3版本,您可以使用该方法 set_encoding 指定字符集,源代码 是在。 有效的名称都是这些名字,都是有效的 PHP mbstring库:

geshi美元 - > set_encoding 美元的编码 ;

有一个有效的字符串表 美元的编码 在php.net手册上面。 如果你不 指定一个编码,或指定一个无效的编码,使用的字符集是iso - 8859 - 1。

3.7错误处理

如果你想强调使用语言,不存在吗? 或者,如果 GeSHi 不能读取所需的文件? 你得到的结果可能会让人困惑。 你可以检查你的代码,没有发现任何错误。 GeSHi 提供的方法发现 GeSHi 自己发现什么毛病你试图做什么。 后高亮显示, 你可以叫的 错误 方法:

geshi美元 新 GeSHi “嗨” “thisLangIsNotSupported” ;

回声 geshi美元 - > 错误 / /回声错误消息

错误消息你会是这样的:

GeSHi 错误: GeSHi 找不到语言thisLangIsNotSupported(使用路径geshi /)(代码2)

错误输出将会是最后一个错误 GeSHi 遇到了,就像如何 mysql_error 的工作原理。

3.8禁用一些词汇学的样式

的一个缺点 GeSHi 是大源文件使用复杂的语言,它可以非常慢 每一个选项打开。 尽管未来版本将专注于速度/资源的一面突显, 你可以加速通过禁用一些高亮显示的选项。 这是通过使用一个 一系列的 set_ _highlighting 方法:

set_keyword_group_highlighting 美元集团 美元的标志 :
集是否一个特定的 美元集团 的关键词是否需要强调。 必要的咨询 语言文件(s)看看 美元集团 应该为每个组(通常是一个正整数)。 美元的标志 是 假 如果你想禁用强调这组,和 真正的 如果你想要 重新启用higlighting这个群体。 如果您禁用一个关键字组即使关键字组 相关的URL将不会为该关键字生成。
set_comments_highlighting 美元集团 美元的标志 :
集是否一个特定的 美元集团 的评论是否需要强调。 必要的咨询 语言文件(s)看看 美元集团 应该为每个组(通常是一个正整数或th 字符串 “多” 多行注释。 美元的标志 是 假 如果你想禁用 强调这一组, 真正的 如果你想重新启用高亮显示的组。
set_regexps_highlighting 美元regexp 美元的标志 :
集是否一个特定的 美元regexp 是否需要强调。 查阅必要的语言文件 看看 美元regexp 应该为每一个正则表达式(通常是一个正整数或字符串 “多” 多行注释。 美元的标志 是 假 如果你想禁用强调这个群体, 和 真正的 如果你想重新启用高亮显示的组。

下面的方法:

  • set_escape_characters_highlighting 美元的标志 )
  • set_symbols_highlighting 美元的标志 )
  • set_strings_highlighting 美元的标志 )
  • set_numbers_highlighting 美元的标志 )
  • set_methods_highlighting 美元的标志 )

在各自的词汇学(如工作。 set_methods_highlighting 将禁用/启用高亮显示的方法)。 为每个方法,如果 美元的标志 是 假 然后相关的词汇学(这不会突出显示 意味着没有 HTML 会像往常一样,围绕着词汇的节省时间和带宽。

强调应该禁用或使再能 GeSHi 提供了两种方法叫做 disable_highlighting 和 enable_highlighting 美元的标志 。 可选paramter 美元的标志 已经添加在1.0.7.21和指定吗 理想的状态,即。 真正的 (默认)把所有突出显示,或 假 把所有 突出了。自从1.0.7.21方法 disnable_highlighting 已经成为弃用。

3.9设置标签宽度

如果你使用 前 标题,标签是由浏览器自动处理,一般来说可以 依靠良好的结果。 然而,如果您正在使用 div 头,您可能希望指定一个选项卡 明确的宽度。

注意标签创建以这种方式不会像正常的标签——不会有“制表位”,而不是 标签将被替换为指定数量的空间——就像大多数编辑。

改变标签的宽度,你所说的 set_tab_width 方法:

geshi美元 - > set_tab_width 美元的宽度 ;

在哪里 美元的宽度 是空间的宽度你喜欢标签。

3.10使用严格的模式

一些棘手的,这样的语言和跳的文件,他们在。 例如,巨大的 大多数你读这将使用一个 PHP 文件。 你知道 PHP 代码只是如果它执行 在这样的分隔符 < ? php 和 ? > (当然还有其他…)。 所以如果你做 在一个php文件?

< img src = " < ? php 回声 兰德 100年 ? > " / >

当使用 GeSHi 没有严格的模式,或使用一个糟糕的萤光笔,到头来你会炒垃圾, 尤其是如果你是松弛的,你把你的报价,你可以得到休息 你的文件作为明亮的蓝色。 幸运的是,你可以告诉 GeSHi “严格的”当它突出 当它不使用enable_strict_mode 方法:

geshi美元 - > enable_strict_mode 美元的模式 ;

在哪里 美元的模式 是 真正的 未指定启用严格模式或 假 禁用 严格模式如果你已经把它现在不想要。

注意:

的 GeSHi 1.0.8告诉有一个新的方法 GeSHi 何时使用严格的模式 这是更聪明的比之前的版本。 GeSHi 现在也 允许 GESHI_MAYBE GESHI_NEVER 和 GESHI_ALWAYS 而不是 真正的 和 假 。 基本上 GESHI_ALWAYS 真正的 )总是使严格的模式, 而 GESHI_NEVER 假 )完全禁用严格模式。 新事物是 GESHI_MAYBE 使严格模式如果发现任何序列的代码 看起来像严格块分隔符。

顺便说一下:这就是为什么这部分必须被改变,作为新文档 现在我们使用工具,适用于这一特性,因此检测时必须使用严格的模式…

3.11添加/删除关键字

让说,你工作在一个大的项目,有很多文件,很多类和函数。 也许你也 网上有源代码和凸显了吗 GeSHi 也许作为CVS的前端,作为一个学习工具,一些东西 指等等。 好吧,为什么不强调函数和类的名称 你的 项目使用 作为标准的函数和类? 或者你强调某些功能不感兴趣,并将 要删除它们吗? 或者你不介意如果整个函数组走西方的速度? GeSHi 可以处理所有这一切!

3.11.1添加一个关键字

如果你想添加一个关键字到现有关键字组,您可以使用 add_keyword 方法:

geshi美元 - > add_keyword 美元的关键 美元的词 ;

在哪里 美元的关键 是群关键字的索引你想添加这个关键词,然后呢 美元的词 是 添加这个词。

这意味着知识的语言文件,知道正确的索引。

3.11.2删除关键字

也许你想要删除一个字从现有的组。 也许你不使用它,想节省一些时间。 不管什么原因,你可以使用删除它 remove_keyword 方法:

geshi美元 - > remove_keyword 美元的关键 美元的词 ;

在哪里 美元的关键 是群关键字的索引,您想要删除这个关键字,然后呢 美元的词 是删除这个词。

这意味着知识的语言文件,知道正确的索引——大多数时候你的关键词 想要删除将在3组,但这是没有保证的,你应该先检查语言文件。

这个函数是沉默的,如果不指定组中的关键字,会发生什么可怕的。

3.11.3添加一个关键字组

假设你的大项目你有几个主要函数和类你想突出显示。 为什么不 把它们作为自己的群体,而不是让他们强调了其他关键字一样吗? 然后你可以 他们脱颖而出,人们可以立即看到哪些函数和类是用户定义的或内在的。 此外, 你可以设置这个群体的URL指向您的项目的API文档。

你添加一个关键字组使用 add_keyword_group 方法:

geshi美元 - > add_keyword_group 美元的关键 美元的风格 case_sensitive美元 美元的话 ;

在哪里 美元的关键 是关键,你想使用引用这个群体, 美元的风格 的风格 你想使用这组风格, case_sensitive美元 是 真正的 或 假 这取决于你想要的 这组关键词是否区分大小写 美元的话 是一个数组的单词(或字符串)的 单词添加到这个组。 例如:

geshi美元 - > add_keyword_group 10 的颜色:# 600000; 假 数组 “myfunc_1” “myfunc_2” “myfunc_3” ;

添加一个关键字引用指数10组,组将所有关键字的深红色,每个关键字 可以在任何情况下,它包含关键字“myfunc_1”,“myfunc_2”和“myfunc_3”。

在创建这样一个字组,你可以调用其他 GeSHi 方法,就像任何其他关键字组。

警告:

如果你指定一个 美元的关键 已经有一个关键字组,老字组 覆盖! 大多数语言文件不使用数字大于5,所以为稳妥起见,我建议你用一个数字 像10或42。

3.11.4删除关键字组

也许你 真的 需要的速度吗? 为什么不直接删除整个关键字组? GeSHi 不需要遍历 每个关键字检查其存在,节省很多时间。 您删除一个字组使用 remove_keyword_group 方法:

geshi美元 - > remove_keyword_group 美元的关键 ;

在哪里 美元的关键 是关键的你想删除。 这意味着知识的语言文件。

3.12页眉和页脚为你的代码

所以你想添加一些特殊的信息突出显示的来源? GeSHi 可以这么做! 您可以指定标头 和页脚为你的代码,风格,将信息从强调源插入你的页眉或页脚。

3.12.1关键字替换

在你的页眉和页脚,你可以把特殊的关键字,将替换为实际配置值 这 GeSHi 对象。 您可以使用的关键词是:

  • <时间> 或 {时间} 是被时间所取代 parse_code 方法——例如, 用了多长时间为您的代码高亮显示。 返回的时间是三位小数。
  • <语言> 或 {语言} 取而代之的是不错,友好的版本使用语言的名称 突出这段代码。
  • <速度> 或 {速度} :被源被处理的速度。
  • <版本> 或 { VERSION } GeSHi 版本用于突出显示的代码。

3.12.2设置标题内容

你的代码是一个头 div 在包含块。 因此,它是影响 该方法 set_overall_style ,应该包含的那种 HTML 属于一个 div 。 你可以使用任何 HTML 这是一个你喜欢的,格式 HTML 文档。 您应该使用有效 HTML ——转换为实体 任何你想要的quotemarks或尖括号显示。 设置标题内容使用方法 set_header_content :

geshi美元 - > set_header_content 美元的内容 ;

在哪里 美元的内容 是 HTML 您想要使用的头。

为您的代码是一个页脚 div 在包含块。 因此,它是影响 该方法 set_overall_style ,应该包含的那种 HTML 属于一个 div 。 你可以使用任何 HTML 这是一个你喜欢的,格式 HTML 文档。 您应该使用有效 HTML ——转换为实体 任何你想要的quotemarks或尖括号显示。 设置页脚内容使用方法 set_footer_content :

geshi美元 - > set_footer_content 美元的内容 ;

在哪里 美元的内容 是 HTML 您想要使用的页脚。

3.12.4样式标题内容

您可以应用样式设置的标题内容 set_header_content_style :

geshi美元 - > set_header_content_style 美元的风格 ;

在哪里 美元的风格 是您想要使用的样式表声明风格标题内容。

你可以把样式应用到页脚内容设置的 set_footer_content_style :

geshi美元 - > set_footer_content_style 美元的风格 ;

在哪里 美元的风格 是您想要使用的样式表声明风格页脚内容。

3.13关键字的url

版本1.0.2, GeSHi 允许您指定的URL字组。 使用这个URL GeSHi 转换 关键字组分成适当的文档的url。 和使用 add_keyword_group 你 可以添加函数和类从自己的项目和使用的URL功能提供一个链接到你的吗 自己的API文档。

3.13.1设置为关键字组一个URL

设置URL用于关键字组,您可以使用 set_url_for_keyword_group 方法:

geshi美元 - > set_url_for_keyword_group 美元集团 $ url ;

在哪里 美元集团 关键字组你想指定的URL,然后呢 $ url 的网址是 这组关键词。

您可能想知道如何制作组中的每个关键字指向正确的URL。 你这样做把 {帧} 在正确的地方在URL中。 例如, PHP 方便的链接 www.php.net/function-name 这个函数的文档,所以使用的URL http://www.php.net/ {帧} 

当然,当你得到语言(如Java),这使得它的类文档在相关文件夹,它得到了 小技巧制定一个适当的URL(请参阅Java语言文件!)。 我希望提供一些 重定向服务 GeSHi 在未来的网站。

注意:

的版本1.0.7.21有增加了两个符号可以使用链接功能。 { FNAMEL } 将生成的小写版本关键字, { FNAMEU } 将生成的大写版本。 {帧} 将提供关键字在语言文件中指定。 使用一个更具体的占位符 如果可能的话 ,因为他们导致的开销更少,而连接不分大小写的语言。

为一个关键字组3.13.2禁用URL

很容易为一个关键字组禁用URL:简单使用的方法 set_url_for_keyword_group 通过 一个空字符串作为URL:

geshi美元 - > set_url_for_keyword_group 美元集团 ” ;

3.13.3禁用所有url的关键词

的 GeSHi 1.0.7.18,您可以禁用所有URL链接的关键词:

geshi美元 - > enable_keyword_links 假 ;

你也可以风格功能链接。 你可以风格默认状态,徘徊,活跃和访问状态。 所有的这些都是由一个方法, set_link_styles :

geshi美元 - > set_link_styles 美元的模式 美元的风格 ;

在哪里 美元的模式 是4个值之一:

  • GESHI_LINK 默认样式的链接。
  • GESHI_HOVER 链接时专注的风格(鼠标悬停)。
  • GESHI_ACTIVE 链接被点击时的风格。
  • GESHI_VISITED 的风格,用户已经访问过的链接。

和 美元的风格 是链接样式表声明申请。

注意:

的名字 GESHI_LINK GESHI_HOVER …是常数。 不要把它们放在引号!

3.13.5设置链接目标

也许你想要设置的目标链接属性,所以手册页中打开一个新窗口? 使用 set_link_target 方法:

geshi美元 - > set_link_target 美元的目标 美元的风格 ;

在哪里 美元的目标 任何有效的(X) HTML 目标价值 平等自愿 或 _top 为例。

3.14使用上下文重要性

警告:

此功能不仅是车,但在提升被证明很难实现。 因此,该 功能很可能是 删除 在1.2.0。 特此警告!

这个特性允许您的一部分来源标记为重要。 但随着 实现它的使用是弃用,你应该考虑使用 下面描述的“额外突出线条”功能。

3.15突出特殊方向“额外的”

另一种高亮显示(和更稳定的)方法的代码是很重要的 是使用额外的强调。 尽管你可能不知道什么样的行号 包含重要的线,如果你这样做的方法是一个更灵活的方式 作出重要行脱颖而出。

3.15.1强调额外指定行

指定行突出显示额外的,你通过一个数组包含行号 highlight_lines_extra :

geshi美元 - > highlight_lines_extra 美元的数组 ;

数组可以在表单中 数组 12 344年 4242年 由一个数据库查询,生成 通过源对某些重要的事情和工作线这些东西是什么… 但是你得到了行号,数组应该只是一个整数数组。

这里有一个例子,使用相同的来源:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
//
// Here we go again! This time we'll simply highlight the 8th line//
$source = 'public int[][] product ( n, m ){
  int [][] ans = new int[n][m];  for ( int i = 0; i < n; i++ )
  {    for ( int j = 0; i < m; j++ )
    {      ans[i][j] = i * j;
    }  }
  return ans;}';
 $geshi = new GeSHi($source, 'java');
 $geshi->highlight_lines_extra(array(8));
 echo $geshi->parse_code();

生产:

Java代码
1
23
45
67
89
1011
12
public int[][] product ( n, m )
int [][] ans = new int[n][m];
  for ( int i = 0; i < n; i++ {
    for ( int j = 0; i < m; j++ )    {
      ans[i][j] = i * j;    }
  return ans;
}

更重要的是,正如您所看到的突出显示的代码行实际上仍然是强调本身。

3.15.2风格突出显示的行

再次与上下文的重要性,你不是链接到黄色的默认主题。 你可以 使用 set_highlight_lines_extra_style 方法:

geshi美元 - > set_highlight_lines_extra_style 美元的风格 ;

在哪里 美元的风格 样式表声明你想申请行突出显示。

3.16每一行添加id

也许你是一个javascript成瘾者? GeSHi 提供了一种方法给每一行一个ID,这样你就可以访问这条线 javascript,或者仅仅是平原 CSS (但如果你想访问行 CSS 你应该使用这种方法 在前面的部分)。 你所说的使id enable_ids 方法:

geshi美元 - > enable_ids 美元的标志 ;

在哪里 美元的标志 是 真正的 或不存在,使IDs, 假 如果你需要再次禁用它们。

形式生成的ID { overall-css-id } - {行编号} 。 举个例子,如果你设置的整体 CSS id “mycode”,然后将每一行的id“mycode-1”、“mycode-2”等,如果没有 CSS 组ID,然后一个是 由形式 geshi -随机字符[4] ,但这不是有用的,如果你想做javascript操作。

3.17样式的时候

一旦你被称为 parse_code ,你可以让时间运行强调通过调用 get_time 方法:

PHP代码
1
23
45
67
$geshi = new GeSHi($source, $language, $path);
 $code = mysql_real_escape_string($geshi->parse_code());
$time = $geshi->get_time()// do something with itmysql_query("INSERT INTO code VALUES ('$code', '$time')");

4语言文件

所以现在你知道特性 GeSHi 提供,甚至也许你插手。 或者 你想要一个语言文件语言X,但似乎并不支持吗? 垃圾! GeSHi 将突出 什么,你认为我编码? ^ _ ^你就必须学会如何做一个语言文件 你自己。 我保证这不是太辛苦,如果你在这里你在正确的地方!

4.1语言文件的一个示例

我们先看一个例子语言文件——有史以来第一语言支持的语言文件, PHP :

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
6465
6667
6869
7071
7273
7475
7677
7879
8081
8283
8485
8687
8889
9091
9293
9495
9697
9899
100101
102103
104105
106107
108109
110111
112113
114115
116117
118119
120121
122123
124125
126127
128129
130131
132133
134135
136137
138139
140141
142143
144145
146147
148149
150151
152153
154155
156157
158159
160161
162163
164165
166167
168169
170171
172173
174175
176177
178179
180181
182183
184185
186187
188189
190191
192193
194195
196197
198199
200201
202203
204205
206207
208209
210211
212213
214215
216217
218219
220221
222223
224225
226227
228229
230231
232233
234235
236237
238239
240241
242243
244245
246247
248249
250251
252253
254255
256257
258259
260261
262263
264265
266267
268269
270271
272273
274275
276277
278279
280281
282283
284285
286287
288289
290291
292293
294295
296297
298299
300301
302303
304305
306307
308309
310311
312313
314315
316317
318319
320321
322323
324325
326327
328329
330331
332333
334335
336337
338339
340341
342343
344345
346347
348349
350351
352353
354355
356357
358359
360361
362363
364365
366367
368369
370371
372373
374375
376377
378379
380381
382383
384385
386387
388389
390391
392393
394395
396397
398399
400401
402403
404405
406407
408409
410411
412413
414415
416417
418419
420421
422423
424425
426427
428429
430431
432433
434435
436437
438439
440441
442443
444445
446447
448449
450451
452453
454455
456457
458459
460461
462463
464465
466467
468469
470471
472473
474475
476477
478479
480481
482483
484485
486487
488489
490491
492493
494495
496497
498499
500501
502503
504505
506507
508509
510511
512513
514515
516517
518519
520521
522523
524525
526527
528529
530531
532533
534535
536537
538539
540541
542543
544545
546547
548549
550551
552553
554555
556557
558559
560561
562563
564565
566567
568569
570571
572573
574575
576577
578579
580581
582583
584585
586587
588589
590591
592593
594595
596597
598599
600601
602603
604605
606607
608609
610611
612613
614615
616617
618619
620621
622623
624625
626627
628629
630631
632633
634635
636637
638639
640641
642643
644645
646647
648649
650651
652653
654655
656657
658659
660661
662663
664665
666667
668669
670671
672673
674675
676677
678679
680681
682683
684685
686687
688689
690691
692693
694695
696697
698699
700701
702703
704705
706707
708709
710711
712713
714715
716717
718719
720721
722723
724725
726727
728729
730731
732733
734735
736737
738739
740741
742743
744745
746747
748749
750751
752753
754755
756757
758759
760761
762763
764765
766767
768769
770771
772773
774775
776777
778779
780781
782783
784785
786787
788789
790791
792793
794795
796797
798799
800801
802803
804805
806807
808809
810811
812813
814815
816817
818819
820821
822823
824825
826827
828829
830831
832833
834835
836837
838839
840841
842843
844845
846847
848849
850851
852853
854855
856857
858859
860861
862863
864865
866867
868869
870871
872873
874875
876877
878879
880881
882883
884885
886887
888889
890891
892893
894895
896897
898899
900901
902903
904905
906907
908909
910911
912913
914915
916917
918919
920921
922923
924925
926927
928929
930931
932933
934935
936937
938939
940941
942943
944945
946947
948949
950951
952953
954955
956957
958959
960961
962963
964965
966967
968969
970971
972973
974975
976977
978979
980981
982983
984985
986987
988989
990991
992993
994995
996997
998999
10001001
10021003
10041005
10061007
10081009
10101011
10121013
10141015
10161017
10181019
10201021
10221023
10241025
10261027
10281029
10301031
10321033
10341035
10361037
10381039
10401041
10421043
10441045
10461047
10481049
10501051
10521053
10541055
10561057
10581059
10601061
10621063
10641065
10661067
10681069
10701071
10721073
10741075
10761077
10781079
10801081
10821083
10841085
10861087
10881089
10901091
10921093
10941095
10961097
10981099
11001101
11021103
11041105
11061107
11081109
11101111
11121113
11141115
11161117
<?php
/************************************************************************************* * php.php
 * -------- * Author: Nigel McNie (nigel@geshi.org)
 * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) * Release Version: 1.0.9.0
 * Date Started: 2004/06/20 *
 * PHP language file for GeSHi. *
 * CHANGES * -------
 * 2008/05/23 (1.0.7.22) *  -  Added description of extra language features (SF#1970248)
 * 2004/11/25 (1.0.3) *  -  Added support for multiple object splitters
 *  -  Fixed &new problem * 2004/10/27 (1.0.2)
 *  -  Added URL support *  -  Added extra constants
 * 2004/08/05 (1.0.1) *  -  Added support for symbols
 * 2004/07/14 (1.0.0) *  -  First Release
 * * TODO (updated 2004/07/14)
 * ------------------------- * * Make sure the last few function I may have missed
 *   (like eval()) are included for highlighting * * Split to several files - php4, php5 etc
 * *************************************************************************************
 * *     This file is part of GeSHi.
 * *   GeSHi is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version. *
 *   GeSHi is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details.
 * *   You should have received a copy of the GNU General Public License
 *   along with GeSHi; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * ************************************************************************************/
 $language_data = array(
    'LANG_NAME' => 'PHP',    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
    'COMMENT_MULTI' => array('/*' => '*/'),    'COMMENT_REGEXP' => array(
        //Heredoc and Nowdoc syntax        3 => '/<<<\s*?(\'?)([a-zA-Z0-9]+?)\1[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
        // phpdoc comments        4 => '#/\*\*(?![\*\/]).*\*/#sU',
        // Advanced # handling        2 => "/#.*?(?:(?=\?\>)|^)/smi"
        ),    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
    'QUOTEMARKS' => array('"'),    'ESCAPE_CHAR' => '',
    'ESCAPE_REGEXP' => array(        //Simple Single Char Escapes
        1 => "#\\\\[nfrtv\$\"\n\\\\]#i",        //Hexadecimal Char Specs
        2 => "#\\\\x[\da-fA-F]{1,2}#i",        //Octal Char Specs
        3 => "#\\\\[0-7]{1,3}#",        //String Parsing of Variable Names
        4 => "#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\1\\]|->[a-z0-9_]+)*\\}#i",        //Experimental extension supporting cascaded {${$var}} syntax
        5 => "#\$[a-z0-9_]+(?:\[[a-z0-9_]+\]|->[a-z0-9_]+)?|(?:\{\$|\$\{)[a-z0-9_]+(?:\[('?)[a-z0-9_]*\\1\]|->[a-z0-9_]+)*\}|\{\$(?R)\}#i",        //Format String support in ""-Strings
        6 => "#%(?:%|(?:\d+\\\\\\\$)?\\+?(?:\x20|0|'.)?-?(?:\d+|\\*)?(?:\.\d+)?[bcdefFosuxX])#"        ),
    'HARDQUOTE' => array("'", "'"),    'HARDESCAPE' => array("'", "\\"),
    'HARDCHAR' => "\\",    'NUMBERS' =>
        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |        GESHI_NUMBER_FLT_SCI_ZERO,
    'KEYWORDS' => array(        1 => array(
            'as','break','case','continue','default','do','else','elseif',            'endfor','endforeach','endif','endswitch','endwhile','for',
            'foreach','if','include','include_once','require','require_once',            'return','switch','throw','while',
             'echo','print'
            ),        2 => array(
            '&amp;new','&lt;/script&gt;','&lt;?php','&lt;script language',            'abstract','class','const','declare','extends','function','global',
            'interface','namespace','new','private','protected','public','self',            'use','var'
            ),        3 => array(
            'abs','acos','acosh','addcslashes','addslashes','aggregate',            'aggregate_methods','aggregate_methods_by_list',
            'aggregate_methods_by_regexp','aggregate_properties',            'aggregate_properties_by_list','aggregate_properties_by_regexp',
            'aggregation_info','apache_child_terminate','apache_get_modules',            'apache_get_version','apache_getenv','apache_lookup_uri',
            'apache_note','apache_request_headers','apache_response_headers',            'apache_setenv','array','array_change_key_case','array_chunk',
            'array_combine','array_count_values','array_diff',            'array_diff_assoc','array_diff_key','array_diff_uassoc',
            'array_diff_ukey','array_fill','array_fill_keys','array_filter',            'array_flip','array_intersect','array_intersect_assoc',
            'array_intersect_key','array_intersect_uassoc',            'array_intersect_ukey','array_key_exists','array_keys','array_map',
            'array_merge','array_merge_recursive','array_multisort','array_pad',            'array_pop','array_product','array_push','array_rand',
            'array_reduce','array_reverse','array_search','array_shift',            'array_slice','array_splice','array_sum','array_udiff',
            'array_udiff_assoc','array_udiff_uassoc','array_uintersect',            'array_uintersect_assoc','array_uintersect_uassoc','array_unique',
            'array_unshift','array_values','array_walk','array_walk_recursive',            'arsort','asin','asinh','asort','assert','assert_options','atan',
            'atan2','atanh','base_convert','base64_decode','base64_encode',            'basename','bcadd','bccomp','bcdiv','bcmod','bcmul',
            'bcompiler_load','bcompiler_load_exe','bcompiler_parse_class',            'bcompiler_read','bcompiler_write_class','bcompiler_write_constant',
            'bcompiler_write_exe_footer','bcompiler_write_file',            'bcompiler_write_footer','bcompiler_write_function',
            'bcompiler_write_functions_from_file','bcompiler_write_header',            'bcompiler_write_included_filename','bcpow','bcpowmod','bcscale',
            'bcsqrt','bcsub','bin2hex','bindec','bindtextdomain',            'bind_textdomain_codeset','bitset_empty','bitset_equal',
            'bitset_excl','bitset_fill','bitset_from_array','bitset_from_hash',            'bitset_from_string','bitset_in','bitset_incl',
            'bitset_intersection','bitset_invert','bitset_is_empty',            'bitset_subset','bitset_to_array','bitset_to_hash',
            'bitset_to_string','bitset_union','blenc_encrypt','bzclose',            'bzcompress','bzdecompress','bzerrno','bzerror','bzerrstr',
            'bzflush','bzopen','bzread','bzwrite','cal_days_in_month',            'cal_from_jd','cal_info','cal_to_jd','call_user_func',
            'call_user_func_array','call_user_method','call_user_method_array',            'ceil','chdir','checkdate','checkdnsrr','chgrp','chmod','chop',
            'chown','chr','chunk_split','class_exists','class_implements',            'class_parents','classkit_aggregate_methods',
            'classkit_doc_comments','classkit_import','classkit_method_add',            'classkit_method_copy','classkit_method_redefine',
            'classkit_method_remove','classkit_method_rename','clearstatcache',            'closedir','closelog','com_create_guid','com_event_sink',
            'com_get_active_object','com_load_typelib','com_message_pump',            'com_print_typeinfo','compact','confirm_phpdoc_compiled',
            'connection_aborted','connection_status','constant',            'convert_cyr_string','convert_uudecode','convert_uuencode','copy',
            'cos','cosh','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_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','crc32','create_function',            '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_copy_handle','curl_errno','curl_error','curl_exec',            'curl_getinfo','curl_init','curl_multi_add_handle',
            'curl_multi_close','curl_multi_exec','curl_multi_getcontent',            'curl_multi_info_read','curl_multi_init','curl_multi_remove_handle',
            'curl_multi_select','curl_setopt','curl_setopt_array',            'curl_version','current','cvsclient_connect','cvsclient_log',
            'cvsclient_login','cvsclient_retrieve','date','date_create',            'date_date_set','date_default_timezone_get',
            'date_default_timezone_set','date_format','date_isodate_set',            'date_modify','date_offset_get','date_parse','date_sun_info',
            'date_sunrise','date_sunset','date_time_set','date_timezone_get',            'date_timezone_set','db_id_list','dba_close','dba_delete',
            'dba_exists','dba_fetch','dba_firstkey','dba_handlers','dba_insert',            'dba_key_split','dba_list','dba_nextkey','dba_open','dba_optimize',
            'dba_popen','dba_replace','dba_sync','dbase_add_record',            'dbase_close','dbase_create','dbase_delete_record',
            'dbase_get_header_info','dbase_get_record',            'dbase_get_record_with_names','dbase_numfields','dbase_numrecords',
            'dbase_open','dbase_pack','dbase_replace_record',            'dbg_get_all_contexts','dbg_get_all_module_names',
            'dbg_get_all_source_lines','dbg_get_context_name',            'dbg_get_module_name','dbg_get_profiler_results',
            'dbg_get_source_context','dblist','dbmclose','dbmdelete',            'dbmexists','dbmfetch','dbmfirstkey','dbminsert','dbmnextkey',
            'dbmopen','dbmreplace','dbx_close','dbx_compare','dbx_connect',            'dbx_error','dbx_escape_string','dbx_fetch_row','dbx_query',
            'dbx_sort','dcgettext','dcngettext','deaggregate','debug_backtrace',            'debug_zval_dump','debugbreak','decbin','dechex','decoct','define',
            'defined','define_syslog_variables','deg2rad','dgettext','die',            'dio_close','dio_open','dio_read','dio_seek','dio_stat','dio_write',
            'dir','dirname','disk_free_space','disk_total_space',            'diskfreespace','dl','dngettext','docblock_token_name',
            'docblock_tokenize','dom_import_simplexml','domxml_add_root',            'domxml_attributes','domxml_children','domxml_doc_add_root',
            'domxml_doc_document_element','domxml_doc_get_element_by_id',            'domxml_doc_get_elements_by_tagname','domxml_doc_get_root',
            'domxml_doc_set_root','domxml_doc_validate','domxml_doc_xinclude',            'domxml_dump_mem','domxml_dump_mem_file','domxml_dump_node',
            'domxml_dumpmem','domxml_elem_get_attribute',            'domxml_elem_set_attribute','domxml_get_attribute','domxml_getattr',
            'domxml_html_dump_mem','domxml_new_child','domxml_new_doc',            'domxml_new_xmldoc','domxml_node','domxml_node_add_namespace',
            'domxml_node_attributes','domxml_node_children',            'domxml_node_get_content','domxml_node_has_attributes',
            'domxml_node_new_child','domxml_node_set_content',            'domxml_node_set_namespace','domxml_node_unlink_node',
            'domxml_open_file','domxml_open_mem','domxml_parser',            'domxml_parser_add_chunk','domxml_parser_cdata_section',
            'domxml_parser_characters','domxml_parser_comment',            'domxml_parser_end','domxml_parser_end_document',
            'domxml_parser_end_element','domxml_parser_entity_reference',            'domxml_parser_get_document','domxml_parser_namespace_decl',
            'domxml_parser_processing_instruction',            'domxml_parser_start_document','domxml_parser_start_element',
            'domxml_root','domxml_set_attribute','domxml_setattr',            'domxml_substitute_entities_default','domxml_unlink_node',
            'domxml_version','domxml_xmltree','doubleval','each','easter_date',            'easter_days','empty','end','ereg','ereg_replace','eregi',
            'eregi_replace','error_get_last','error_log','error_reporting',            'escapeshellarg','escapeshellcmd','eval','event_deschedule',
            'event_dispatch','event_free','event_handle_signal',            'event_have_events','event_init','event_new','event_pending',
            'event_priority_set','event_schedule','event_set','event_timeout',            'exec','exif_imagetype','exif_read_data','exif_tagname',
            'exif_thumbnail','exit','exp','explode','expm1','extension_loaded',            'extract','ezmlm_hash','fbird_add_user','fbird_affected_rows',
            'fbird_backup','fbird_blob_add','fbird_blob_cancel',            'fbird_blob_close','fbird_blob_create','fbird_blob_echo',
            'fbird_blob_get','fbird_blob_import','fbird_blob_info',            'fbird_blob_open','fbird_close','fbird_commit','fbird_commit_ret',
            'fbird_connect','fbird_db_info','fbird_delete_user','fbird_drop_db',            'fbird_errcode','fbird_errmsg','fbird_execute','fbird_fetch_assoc',
            'fbird_fetch_object','fbird_fetch_row','fbird_field_info',            'fbird_free_event_handler','fbird_free_query','fbird_free_result',
            'fbird_gen_id','fbird_maintain_db','fbird_modify_user',            'fbird_name_result','fbird_num_fields','fbird_num_params',
            'fbird_param_info','fbird_pconnect','fbird_prepare','fbird_query',            'fbird_restore','fbird_rollback','fbird_rollback_ret',
            'fbird_server_info','fbird_service_attach','fbird_service_detach',            'fbird_set_event_handler','fbird_trans','fbird_wait_event','fclose',
            'fdf_add_doc_javascript','fdf_add_template','fdf_close',            'fdf_create','fdf_enum_values','fdf_errno','fdf_error','fdf_get_ap',
            'fdf_get_attachment','fdf_get_encoding','fdf_get_file',            'fdf_get_flags','fdf_get_opt','fdf_get_status','fdf_get_value',
            'fdf_get_version','fdf_header','fdf_next_field_name','fdf_open',            'fdf_open_string','fdf_remove_item','fdf_save','fdf_save_string',
            'fdf_set_ap','fdf_set_encoding','fdf_set_file','fdf_set_flags',            'fdf_set_javascript_action','fdf_set_on_import_javascript',
            'fdf_set_opt','fdf_set_status','fdf_set_submit_form_action',            'fdf_set_target_frame','fdf_set_value','fdf_set_version','feof',
            'fflush','fgetc','fgetcsv','fgets','fgetss','file','file_exists',            'file_get_contents','file_put_contents','fileatime','filectime',
            'filegroup','fileinode','filemtime','fileowner','fileperms',            'filepro','filepro_fieldcount','filepro_fieldname',
            'filepro_fieldtype','filepro_fieldwidth','filepro_retrieve',            'filepro_rowcount','filesize','filetype','filter_has_var',
            'filter_id','filter_input','filter_input_array','filter_list',            'filter_var','filter_var_array','finfo_buffer','finfo_close',
            'finfo_file','finfo_open','finfo_set_flags','floatval','flock',            'floor','flush','fmod','fnmatch','fopen','fpassthru','fprintf',
            'fputcsv','fputs','fread','frenchtojd','fribidi_charset_info',            'fribidi_get_charsets','fribidi_log2vis','fscanf','fseek',
            'fsockopen','fstat','ftell','ftok','ftp_alloc','ftp_cdup',            'ftp_chdir','ftp_chmod','ftp_close','ftp_connect','ftp_delete',
            'ftp_exec','ftp_fget','ftp_fput','ftp_get','ftp_get_option',            'ftp_login','ftp_mdtm','ftp_mkdir','ftp_nb_continue','ftp_nb_fget',
            'ftp_nb_fput','ftp_nb_get','ftp_nb_put','ftp_nlist','ftp_pasv',            'ftp_put','ftp_pwd','ftp_quit','ftp_raw','ftp_rawlist','ftp_rename',
            'ftp_rmdir','ftp_set_option','ftp_site','ftp_size',            'ftp_ssl_connect','ftp_systype','ftruncate','function_exists',
            'func_get_arg','func_get_args','func_num_args','fwrite','gd_info',            'getallheaders','getcwd','getdate','getenv','gethostbyaddr',
            'gethostbyname','gethostbynamel','getimagesize','getlastmod',            'getmxrr','getmygid','getmyinode','getmypid','getmyuid','getopt',
            'getprotobyname','getprotobynumber','getrandmax','getrusage',            'getservbyname','getservbyport','gettext','gettimeofday','gettype',
            'get_browser','get_cfg_var','get_class','get_class_methods',            'get_class_vars','get_current_user','get_declared_classes',
            'get_defined_constants','get_defined_functions','get_defined_vars',            'get_extension_funcs','get_headers','get_html_translation_table',
            'get_included_files','get_include_path','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','glob','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_nextprime','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','gopher_parsedir',
            'gregoriantojd','gzclose','gzcompress','gzdeflate','gzencode',            'gzeof','gzfile','gzgetc','gzgets','gzgetss','gzinflate','gzopen',
            'gzpassthru','gzputs','gzread','gzrewind','gzseek','gztell',            'gzuncompress','gzwrite','hash','hash_algos','hash_file',
            'hash_final','hash_hmac','hash_hmac_file','hash_init','hash_update',            'hash_update_file','hash_update_stream','header','headers_list',
            'headers_sent','hebrev','hebrevc','hexdec','highlight_file',            'highlight_string','html_doc','html_doc_file','html_entity_decode',
            'htmlentities','htmlspecialchars','htmlspecialchars_decode',            'http_build_cookie','http_build_query','http_build_str',
            'http_build_url','http_cache_etag','http_cache_last_modified',            'http_chunked_decode','http_date','http_deflate','http_get',
            'http_get_request_body','http_get_request_body_stream',            'http_get_request_headers','http_head','http_inflate',
            'http_match_etag','http_match_modified','http_match_request_header',            'http_negotiate_charset','http_negotiate_content_type',
            'http_negotiate_language','http_parse_cookie','http_parse_headers',            'http_parse_message','http_parse_params',
            'http_persistent_handles_clean','http_persistent_handles_count',            'http_persistent_handles_ident','http_post_data','http_post_fields',
            'http_put_data','http_put_file','http_put_stream','http_redirect',            'http_request','http_request_body_encode',
            'http_request_method_exists','http_request_method_name',            'http_request_method_register','http_request_method_unregister',
            'http_send_content_disposition','http_send_content_type',            'http_send_data','http_send_file','http_send_last_modified',
            'http_send_status','http_send_stream','http_support',            'http_throttle','hypot','i18n_convert','i18n_discover_encoding',
            'i18n_http_input','i18n_http_output','i18n_internal_encoding',            'i18n_ja_jp_hantozen','i18n_mime_header_decode',
            'i18n_mime_header_encode','ibase_add_user','ibase_affected_rows',            'ibase_backup','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_commit_ret',            'ibase_connect','ibase_db_info','ibase_delete_user','ibase_drop_db',
            'ibase_errcode','ibase_errmsg','ibase_execute','ibase_fetch_assoc',            'ibase_fetch_object','ibase_fetch_row','ibase_field_info',
            'ibase_free_event_handler','ibase_free_query','ibase_free_result',            'ibase_gen_id','ibase_maintain_db','ibase_modify_user',
            'ibase_name_result','ibase_num_fields','ibase_num_params',            'ibase_param_info','ibase_pconnect','ibase_prepare','ibase_query',
            'ibase_restore','ibase_rollback','ibase_rollback_ret',            'ibase_server_info','ibase_service_attach','ibase_service_detach',
            'ibase_set_event_handler','ibase_trans','ibase_wait_event','iconv',            'iconv_get_encoding','iconv_mime_decode',
            'iconv_mime_decode_headers','iconv_mime_encode',            'iconv_set_encoding','iconv_strlen','iconv_strpos','iconv_strrpos',
            'iconv_substr','id3_get_frame_long_name','id3_get_frame_short_name',            'id3_get_genre_id','id3_get_genre_list','id3_get_genre_name',
            'id3_get_tag','id3_get_version','id3_remove_tag','id3_set_tag',            'idate','ignore_user_abort','image_type_to_extension',
            'image_type_to_mime_type','image2wbmp','imagealphablending',            'imageantialias','imagearc','imagechar','imagecharup',
            'imagecolorallocate','imagecolorallocatealpha','imagecolorat',            'imagecolorclosest','imagecolorclosestalpha','imagecolordeallocate',
            'imagecolorexact','imagecolorexactalpha','imagecolormatch',            'imagecolorresolve','imagecolorresolvealpha','imagecolorset',
            'imagecolorsforindex','imagecolorstotal','imagecolortransparent',            'imageconvolution','imagecopy','imagecopymerge',
            'imagecopymergegray','imagecopyresampled','imagecopyresized',            'imagecreate','imagecreatefromgd','imagecreatefromgd2',
            'imagecreatefromgd2part','imagecreatefromgif','imagecreatefromjpeg',            'imagecreatefrompng','imagecreatefromstring','imagecreatefromwbmp',
            'imagecreatefromxbm','imagecreatetruecolor','imagedashedline',            'imagedestroy','imageellipse','imagefill','imagefilledarc',
            'imagefilledellipse','imagefilledpolygon','imagefilledrectangle',            'imagefilltoborder','imagefilter','imagefontheight',
            'imagefontwidth','imageftbbox','imagefttext','imagegammacorrect',            'imagegd','imagegd2','imagegif','imagegrabscreen','imagegrabwindow',
            'imageinterlace','imageistruecolor','imagejpeg','imagelayereffect',            'imageline','imageloadfont','imagepalettecopy','imagepng',
            'imagepolygon','imagepsbbox','imagepsencodefont',            'imagepsextendfont','imagepsfreefont','imagepsloadfont',
            'imagepsslantfont','imagepstext','imagerectangle','imagerotate',            'imagesavealpha','imagesetbrush','imagesetpixel','imagesetstyle',
            'imagesetthickness','imagesettile','imagestring','imagestringup',            'imagesx','imagesy','imagetruecolortopalette','imagettfbbox',
            'imagettftext','imagetypes','imagewbmp','imagexbm','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_get_quotaroot','imap_getacl','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_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_qprint',
            'imap_rename','imap_renamemailbox','imap_reopen',            'imap_rfc822_parse_adrlist','imap_rfc822_parse_headers',
            'imap_rfc822_write_address','imap_savebody','imap_scan',            'imap_scanmailbox','imap_search','imap_set_quota','imap_setacl',
            'imap_setflag_full','imap_sort','imap_status','imap_subscribe',            'imap_thread','imap_timeout','imap_uid','imap_undelete',
            'imap_unsubscribe','imap_utf7_decode','imap_utf7_encode',            'imap_utf8','implode','import_request_variables','in_array',
            'ini_alter','ini_get','ini_get_all','ini_restore','ini_set',            'intval','ip2long','iptcembed','iptcparse','isset','is_a',
            'is_array','is_bool','is_callable','is_dir','is_double',            'is_executable','is_file','is_finite','is_float','is_infinite',
            'is_int','is_integer','is_link','is_long','is_nan','is_null',            'is_numeric','is_object','is_readable','is_real','is_resource',
            'is_scalar','is_soap_fault','is_string','is_subclass_of',            'is_uploaded_file','is_writable','is_writeable','iterator_apply',
            'iterator_count','iterator_to_array','java_last_exception_clear',            'java_last_exception_get','jddayofweek','jdmonthname','jdtofrench',
            'jdtogregorian','jdtojewish','jdtojulian','jdtounix','jewishtojd',            'join','jpeg2wbmp','json_decode','json_encode','juliantojd','key',
            'key_exists','krsort','ksort','lcg_value','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_sort','ldap_start_tls','ldap_unbind','levenshtein',
            'libxml_clear_errors','libxml_get_errors','libxml_get_last_error',            'libxml_set_streams_context','libxml_use_internal_errors','link',
            'linkinfo','list','localeconv','localtime','log','log1p','log10',            'long2ip','lstat','ltrim','lzf_compress','lzf_decompress',
            'lzf_optimized_for','magic_quotes_runtime','mail','max','mbereg',            'mberegi','mberegi_replace','mbereg_match','mbereg_replace',
            'mbereg_search','mbereg_search_getpos','mbereg_search_getregs',            'mbereg_search_init','mbereg_search_pos','mbereg_search_regs',
            'mbereg_search_setpos','mbregex_encoding','mbsplit','mbstrcut',            'mbstrlen','mbstrpos','mbstrrpos','mbsubstr','mb_check_encoding',
            'mb_convert_case','mb_convert_encoding','mb_convert_kana',            'mb_convert_variables','mb_decode_mimeheader',
            'mb_decode_numericentity','mb_detect_encoding','mb_detect_order',            'mb_encode_mimeheader','mb_encode_numericentity','mb_ereg',
            'mb_eregi','mb_eregi_replace','mb_ereg_match','mb_ereg_replace',            'mb_ereg_search','mb_ereg_search_getpos','mb_ereg_search_getregs',
            'mb_ereg_search_init','mb_ereg_search_pos','mb_ereg_search_regs',            'mb_ereg_search_setpos','mb_get_info','mb_http_input',
            'mb_http_output','mb_internal_encoding','mb_language',            'mb_list_encodings','mb_output_handler','mb_parse_str',
            'mb_preferred_mime_name','mb_regex_encoding','mb_regex_set_options',            'mb_send_mail','mb_split','mb_strcut','mb_strimwidth','mb_stripos',
            'mb_stristr','mb_strlen','mb_strpos','mb_strrchr','mb_strrichr',            'mb_strripos','mb_strrpos','mb_strstr','mb_strtolower',
            'mb_strtoupper','mb_strwidth','mb_substitute_character','mb_substr',            'mb_substr_count','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_deinit','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','md5_file',
            'mdecrypt_generic','memcache_add','memcache_add_server',            'memcache_close','memcache_connect','memcache_debug',
            'memcache_decrement','memcache_delete','memcache_flush',            'memcache_get','memcache_get_extended_stats',
            'memcache_get_server_status','memcache_get_stats',            'memcache_get_version','memcache_increment','memcache_pconnect',
            'memcache_replace','memcache_set','memcache_set_compress_threshold',            'memcache_set_server_params','memory_get_peak_usage',
            'memory_get_usage','metaphone','mhash','mhash_count',            'mhash_get_block_size','mhash_get_hash_name','mhash_keygen_s2k',
            'method_exists','microtime','mime_content_type','min',            'ming_keypress','ming_setcubicthreshold','ming_setscale',
            'ming_useconstants','ming_useswfversion','mkdir','mktime',            'money_format','move_uploaded_file','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_bind','mssql_close',            'mssql_connect','mssql_data_seek','mssql_execute',
            'mssql_fetch_array','mssql_fetch_assoc','mssql_fetch_batch',            'mssql_fetch_field','mssql_fetch_object','mssql_fetch_row',
            'mssql_field_length','mssql_field_name','mssql_field_seek',            'mssql_field_type','mssql_free_result','mssql_free_statement',
            'mssql_get_last_message','mssql_guid_string','mssql_init',            'mssql_min_error_severity','mssql_min_message_severity',
            'mssql_next_result','mssql_num_fields','mssql_num_rows',            'mssql_pconnect','mssql_query','mssql_result','mssql_rows_affected',
            'mssql_select_db','mt_getrandmax','mt_rand','mt_srand','mysql',            'mysql_affected_rows','mysql_client_encoding','mysql_close',
            'mysql_connect','mysql_createdb','mysql_create_db',            'mysql_data_seek','mysql_dbname','mysql_db_name','mysql_db_query',
            'mysql_dropdb','mysql_drop_db','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_fieldflags','mysql_fieldlen',
            'mysql_fieldname','mysql_fieldtable','mysql_fieldtype',            'mysql_field_flags','mysql_field_len','mysql_field_name',
            'mysql_field_seek','mysql_field_table','mysql_field_type',            'mysql_freeresult','mysql_free_result','mysql_get_client_info',
            'mysql_get_host_info','mysql_get_proto_info',            'mysql_get_server_info','mysql_info','mysql_insert_id',
            'mysql_listdbs','mysql_listfields','mysql_listtables',            'mysql_list_dbs','mysql_list_fields','mysql_list_processes',
            'mysql_list_tables','mysql_numfields','mysql_numrows',            'mysql_num_fields','mysql_num_rows','mysql_pconnect','mysql_ping',
            'mysql_query','mysql_real_escape_string','mysql_result',            'mysql_selectdb','mysql_select_db','mysql_set_charset','mysql_stat',
            'mysql_tablename','mysql_table_name','mysql_thread_id',            'mysql_unbuffered_query','mysqli_affected_rows','mysqli_autocommit',
            'mysqli_bind_param','mysqli_bind_result','mysqli_change_user',            'mysqli_character_set_name','mysqli_client_encoding','mysqli_close',
            'mysqli_commit','mysqli_connect','mysqli_connect_errno',            'mysqli_connect_error','mysqli_data_seek','mysqli_debug',
            'mysqli_disable_reads_from_master','mysqli_disable_rpl_parse',            'mysqli_dump_debug_info','mysqli_embedded_server_end',
            'mysqli_embedded_server_start','mysqli_enable_reads_from_master',            'mysqli_enable_rpl_parse','mysqli_errno','mysqli_error',
            'mysqli_escape_string','mysqli_execute','mysqli_fetch',            'mysqli_fetch_array','mysqli_fetch_assoc','mysqli_fetch_field',
            'mysqli_fetch_field_direct','mysqli_fetch_fields',            'mysqli_fetch_lengths','mysqli_fetch_object','mysqli_fetch_row',
            'mysqli_field_count','mysqli_field_seek','mysqli_field_tell',            'mysqli_free_result','mysqli_get_charset','mysqli_get_client_info',
            'mysqli_get_client_version','mysqli_get_host_info',            'mysqli_get_metadata','mysqli_get_proto_info',
            'mysqli_get_server_info','mysqli_get_server_version',            'mysqli_get_warnings','mysqli_info','mysqli_init',
            'mysqli_insert_id','mysqli_kill','mysqli_master_query',            'mysqli_more_results','mysqli_multi_query','mysqli_next_result',
            'mysqli_num_fields','mysqli_num_rows','mysqli_options',            'mysqli_param_count','mysqli_ping','mysqli_prepare','mysqli_query',
            'mysqli_real_connect','mysqli_real_escape_string',            'mysqli_real_query','mysqli_report','mysqli_rollback',
            'mysqli_rpl_parse_enabled','mysqli_rpl_probe',            'mysqli_rpl_query_type','mysqli_select_db','mysqli_send_long_data',
            'mysqli_send_query','mysqli_set_charset',            'mysqli_set_local_infile_default','mysqli_set_local_infile_handler',
            'mysqli_set_opt','mysqli_slave_query','mysqli_sqlstate',            'mysqli_ssl_set','mysqli_stat','mysqli_stmt_affected_rows',
            'mysqli_stmt_attr_get','mysqli_stmt_attr_set',            'mysqli_stmt_bind_param','mysqli_stmt_bind_result',
            'mysqli_stmt_close','mysqli_stmt_data_seek','mysqli_stmt_errno',            'mysqli_stmt_error','mysqli_stmt_execute','mysqli_stmt_fetch',
            'mysqli_stmt_field_count','mysqli_stmt_free_result',            'mysqli_stmt_get_warnings','mysqli_stmt_init',
            'mysqli_stmt_insert_id','mysqli_stmt_num_rows',            'mysqli_stmt_param_count','mysqli_stmt_prepare','mysqli_stmt_reset',
            'mysqli_stmt_result_metadata','mysqli_stmt_send_long_data',            'mysqli_stmt_sqlstate','mysqli_stmt_store_result',
            'mysqli_store_result','mysqli_thread_id','mysqli_thread_safe',            'mysqli_use_result','mysqli_warning_count','natcasesort','natsort',
            'new_xmldoc','next','ngettext','nl2br','nl_langinfo',            'ntuser_getdomaincontroller','ntuser_getusergroups',
            'ntuser_getuserinfo','ntuser_getuserlist','number_format',            'ob_clean','ob_deflatehandler','ob_end_clean','ob_end_flush',
            'ob_etaghandler','ob_flush','ob_get_clean','ob_get_contents',            'ob_get_flush','ob_get_length','ob_get_level','ob_get_status',
            'ob_gzhandler','ob_iconv_handler','ob_implicit_flush',            'ob_inflatehandler','ob_list_handlers','ob_start','ob_tidyhandler',
            'octdec','odbc_autocommit','odbc_binmode','odbc_close',            'odbc_close_all','odbc_columnprivileges','odbc_columns',
            'odbc_commit','odbc_connect','odbc_cursor','odbc_data_source',            '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','opendir','openlog','openssl_csr_export',
            'openssl_csr_export_to_file','openssl_csr_get_public_key',            'openssl_csr_get_subject','openssl_csr_new','openssl_csr_sign',
            'openssl_error_string','openssl_free_key','openssl_get_privatekey',            'openssl_get_publickey','openssl_open','openssl_pkcs12_export',
            'openssl_pkcs12_export_to_file','openssl_pkcs12_read',            'openssl_pkcs7_decrypt','openssl_pkcs7_encrypt',
            'openssl_pkcs7_sign','openssl_pkcs7_verify','openssl_pkey_export',            'openssl_pkey_export_to_file','openssl_pkey_free',
            'openssl_pkey_get_details','openssl_pkey_get_private',            'openssl_pkey_get_public','openssl_pkey_new',
            'openssl_private_decrypt','openssl_private_encrypt',            'openssl_public_decrypt','openssl_public_encrypt','openssl_seal',
            'openssl_sign','openssl_verify','openssl_x509_checkpurpose',            'openssl_x509_check_private_key','openssl_x509_export',
            'openssl_x509_export_to_file','openssl_x509_free',            'openssl_x509_parse','openssl_x509_read','ord',
            'output_add_rewrite_var','output_reset_rewrite_vars','overload',            'outputdebugstring','pack','parse_ini_file','parse_str','parse_url',
            'parsekit_compile_file','parsekit_compile_string',            'parsekit_func_arginfo','parsekit_opcode_flags',
            'parsekit_opcode_name','passthru','pathinfo','pclose',            'pdf_add_bookmark','pdf_add_launchlink','pdf_add_locallink',
            'pdf_add_nameddest','pdf_add_note','pdf_add_pdflink',            'pdf_add_thumbnail','pdf_add_weblink','pdf_arc','pdf_arcn',
            'pdf_attach_file','pdf_begin_font','pdf_begin_glyph',            '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_create_gstate','pdf_create_pvf',
            'pdf_curveto','pdf_delete','pdf_delete_pvf','pdf_encoding_set_char',            'pdf_end_font','pdf_end_glyph','pdf_end_page','pdf_end_pattern',
            'pdf_end_template','pdf_endpath','pdf_fill','pdf_fill_imageblock',            'pdf_fill_pdfblock','pdf_fill_stroke','pdf_fill_textblock',
            'pdf_findfont','pdf_fit_image','pdf_fit_pdi_page',            'pdf_fit_textline','pdf_get_apiname','pdf_get_buffer',
            'pdf_get_errmsg','pdf_get_errnum','pdf_get_parameter',            'pdf_get_pdi_parameter','pdf_get_pdi_value','pdf_get_value',
            'pdf_initgraphics','pdf_lineto','pdf_load_font',            'pdf_load_iccprofile','pdf_load_image','pdf_makespotcolor',
            'pdf_moveto','pdf_new','pdf_open_ccitt','pdf_open_file',            'pdf_open_image','pdf_open_image_file','pdf_open_pdi',
            'pdf_open_pdi_page','pdf_place_image','pdf_place_pdi_page',            'pdf_process_pdi','pdf_rect','pdf_restore','pdf_rotate','pdf_save',
            'pdf_scale','pdf_set_border_color','pdf_set_border_dash',            'pdf_set_border_style','pdf_set_gstate','pdf_set_info',
            'pdf_set_parameter','pdf_set_text_pos','pdf_set_value',            'pdf_setcolor','pdf_setdash','pdf_setdashpattern','pdf_setflat',
            'pdf_setfont','pdf_setlinecap','pdf_setlinejoin','pdf_setlinewidth',            'pdf_setmatrix','pdf_setmiterlimit','pdf_setpolydash','pdf_shading',
            'pdf_shading_pattern','pdf_shfill','pdf_show','pdf_show_boxed',            'pdf_show_xy','pdf_skew','pdf_stringwidth','pdf_stroke',
            'pdf_translate','pdo_drivers','pfsockopen','pg_affected_rows',            'pg_cancel_query','pg_clientencoding','pg_client_encoding',
            'pg_close','pg_cmdtuples','pg_connect','pg_connection_busy',            'pg_connection_reset','pg_connection_status','pg_convert',
            'pg_copy_from','pg_copy_to','pg_dbname','pg_delete','pg_end_copy',            'pg_errormessage','pg_escape_bytea','pg_escape_string','pg_exec',
            'pg_execute','pg_fetch_all','pg_fetch_all_columns','pg_fetch_array',            'pg_fetch_assoc','pg_fetch_object','pg_fetch_result','pg_fetch_row',
            'pg_fieldisnull','pg_fieldname','pg_fieldnum','pg_fieldprtlen',            'pg_fieldsize','pg_fieldtype','pg_field_is_null','pg_field_name',
            'pg_field_num','pg_field_prtlen','pg_field_size','pg_field_table',            'pg_field_type','pg_field_type_oid','pg_free_result',
            'pg_freeresult','pg_get_notify','pg_get_pid','pg_get_result',            'pg_getlastoid','pg_host','pg_insert','pg_last_error',
            'pg_last_notice','pg_last_oid','pg_loclose','pg_locreate',            'pg_loexport','pg_loimport','pg_loopen','pg_loread','pg_loreadall',
            'pg_lounlink','pg_lowrite','pg_lo_close','pg_lo_create',            'pg_lo_export','pg_lo_import','pg_lo_open','pg_lo_read',
            'pg_lo_read_all','pg_lo_seek','pg_lo_tell','pg_lo_unlink',            'pg_lo_write','pg_meta_data','pg_numfields','pg_numrows',
            'pg_num_fields','pg_num_rows','pg_options','pg_parameter_status',            'pg_pconnect','pg_ping','pg_port','pg_prepare','pg_put_line',
            'pg_query','pg_query_params','pg_result','pg_result_error',            'pg_result_error_field','pg_result_seek','pg_result_status',
            'pg_select','pg_send_execute','pg_send_prepare','pg_send_query',            'pg_send_query_params','pg_set_client_encoding',
            'pg_set_error_verbosity','pg_setclientencoding','pg_trace',            'pg_transaction_status','pg_tty','pg_unescape_bytea','pg_untrace',
            'pg_update','pg_version','php_egg_logo_guid','php_ini_loaded_file',            'php_ini_scanned_files','php_logo_guid','php_real_logo_guid',
            'php_sapi_name','php_strip_whitespace','php_uname','phpcredits',            'phpdoc_xml_from_string','phpinfo','phpversion','pi','png2wbmp',
            'pop3_close','pop3_delete_message','pop3_get_account_size',            'pop3_get_message','pop3_get_message_count',
            'pop3_get_message_header','pop3_get_message_ids',            'pop3_get_message_size','pop3_get_message_sizes','pop3_open',
            'pop3_undelete','popen','pos','posix_ctermid','posix_errno',            '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_get_last_error','posix_isatty',
            'posix_kill','posix_mkfifo','posix_setegid','posix_seteuid',            'posix_setgid','posix_setpgid','posix_setsid','posix_setuid',
            'posix_strerror','posix_times','posix_ttyname','posix_uname','pow',            'preg_grep','preg_last_error','preg_match','preg_match_all',
            'preg_quote','preg_replace','preg_replace_callback','preg_split',            'prev','print_r','printf','proc_close','proc_get_status',
            'proc_open','proc_terminate','putenv','quoted_printable_decode',            'quotemeta','rad2deg','radius_acct_open','radius_add_server',
            'radius_auth_open','radius_close','radius_config',            'radius_create_request','radius_cvt_addr','radius_cvt_int',
            'radius_cvt_string','radius_demangle','radius_demangle_mppe_key',            'radius_get_attr','radius_get_vendor_attr','radius_put_addr',
            'radius_put_attr','radius_put_int','radius_put_string',            'radius_put_vendor_addr','radius_put_vendor_attr',
            'radius_put_vendor_int','radius_put_vendor_string',            'radius_request_authenticator','radius_send_request',
            'radius_server_secret','radius_strerror','rand','range',            'rawurldecode','rawurlencode','read_exif_data','readdir','readfile',
            'readgzfile','readlink','realpath','reg_close_key','reg_create_key',            'reg_enum_key','reg_enum_value','reg_get_value','reg_open_key',
            'reg_set_value','register_shutdown_function',            'register_tick_function','rename','res_close','res_get','res_list',
            'res_list_type','res_open','res_set','reset',            'restore_error_handler','restore_include_path','rewind','rewinddir',
            'rmdir','round','rsort','rtrim','runkit_class_adopt',            'runkit_class_emancipate','runkit_constant_add',
            'runkit_constant_redefine','runkit_constant_remove',            'runkit_default_property_add','runkit_function_add',
            'runkit_function_copy','runkit_function_redefine',            'runkit_function_remove','runkit_function_rename','runkit_import',
            'runkit_lint','runkit_lint_file','runkit_method_add',            'runkit_method_copy','runkit_method_redefine',
            'runkit_method_remove','runkit_method_rename','runkit_object_id',            'runkit_return_value_used','runkit_sandbox_output_handler',
            'runkit_superglobals','runkit_zval_inspect','scandir','sem_acquire',            'sem_get','sem_release','sem_remove','serialize',
            'session_cache_expire','session_cache_limiter','session_commit',            'session_decode','session_destroy','session_encode',
            'session_get_cookie_params','session_id','session_is_registered',            'session_module_name','session_name','session_regenerate_id',
            '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_include_path',
            'set_magic_quotes_runtime','set_socket_blocking','set_time_limit',            'setcookie','setlocale','setrawcookie','settype','sha1','sha1_file',
            'shell_exec','shmop_close','shmop_delete','shmop_open','shmop_read',            'shmop_size','shmop_write','shm_attach','shm_detach','shm_get_var',
            'shm_put_var','shm_remove','shm_remove_var','show_source','shuffle',            'similar_text','simplexml_import_dom','simplexml_load_file',
            'simplexml_load_string','sin','sinh','sizeof','sleep','smtp_close',            'smtp_cmd_data','smtp_cmd_mail','smtp_cmd_rcpt','smtp_connect',
            'snmp_get_quick_print','snmp_get_valueretrieval','snmp_read_mib',            'snmp_set_quick_print','snmp_set_valueretrieval','snmp2_get',
            'snmp2_getnext','snmp2_real_walk','snmp2_set','snmp2_walk',            'snmp3_get','snmp3_getnext','snmp3_real_walk','snmp3_set',
            'snmp3_walk','snmpget','snmpgetnext','snmprealwalk','snmpset',            'snmpwalk','snmpwalkoid','socket_accept','socket_bind',
            'socket_clear_error','socket_close','socket_connect',            'socket_create','socket_create_listen','socket_create_pair',
            'socket_getopt','socket_getpeername','socket_getsockname',            'socket_get_option','socket_get_status','socket_iovec_add',
            'socket_iovec_alloc','socket_iovec_delete','socket_iovec_fetch',            'socket_iovec_free','socket_iovec_set','socket_last_error',
            'socket_listen','socket_read','socket_readv','socket_recv',            'socket_recvfrom','socket_recvmsg','socket_select','socket_send',
            'socket_sendmsg','socket_sendto','socket_setopt','socket_set_block',            'socket_set_blocking','socket_set_nonblock','socket_set_option',
            'socket_set_timeout','socket_shutdown','socket_strerror',            'socket_write','socket_writev','sort','soundex','spl_autoload',
            'spl_autoload_call','spl_autoload_extensions',            'spl_autoload_functions','spl_autoload_register',
            'spl_autoload_unregister','spl_classes','spl_object_hash','split',            'spliti','sprintf','sql_regcase','sqlite_array_query',
            'sqlite_busy_timeout','sqlite_changes','sqlite_close',            'sqlite_column','sqlite_create_aggregate','sqlite_create_function',
            'sqlite_current','sqlite_error_string','sqlite_escape_string',            'sqlite_exec','sqlite_factory','sqlite_fetch_all',
            'sqlite_fetch_array','sqlite_fetch_column_types',            'sqlite_fetch_object','sqlite_fetch_single','sqlite_fetch_string',
            'sqlite_field_name','sqlite_has_more','sqlite_has_prev',            'sqlite_last_error','sqlite_last_insert_rowid','sqlite_libencoding',
            'sqlite_libversion','sqlite_next','sqlite_num_fields',            'sqlite_num_rows','sqlite_open','sqlite_popen','sqlite_prev',
            'sqlite_query','sqlite_rewind','sqlite_seek','sqlite_single_query',            'sqlite_udf_decode_binary','sqlite_udf_encode_binary',
            'sqlite_unbuffered_query','sqlite_valid','sqrt','srand','sscanf',            'ssh2_auth_hostbased_file','ssh2_auth_none','ssh2_auth_password',
            'ssh2_auth_pubkey_file','ssh2_connect','ssh2_exec',            'ssh2_fetch_stream','ssh2_fingerprint','ssh2_forward_accept',
            'ssh2_forward_listen','ssh2_methods_negotiated','ssh2_poll',            'ssh2_publickey_add','ssh2_publickey_init','ssh2_publickey_list',
            'ssh2_publickey_remove','ssh2_scp_recv','ssh2_scp_send','ssh2_sftp',            'ssh2_sftp_lstat','ssh2_sftp_mkdir','ssh2_sftp_readlink',
            'ssh2_sftp_realpath','ssh2_sftp_rename','ssh2_sftp_rmdir',            'ssh2_sftp_stat','ssh2_sftp_symlink','ssh2_sftp_unlink',
            'ssh2_shell','ssh2_tunnel','stat','stats_absolute_deviation',            'stats_cdf_beta','stats_cdf_binomial','stats_cdf_cauchy',
            'stats_cdf_chisquare','stats_cdf_exponential','stats_cdf_f',            'stats_cdf_gamma','stats_cdf_laplace','stats_cdf_logistic',
            'stats_cdf_negative_binomial','stats_cdf_noncentral_chisquare',            'stats_cdf_noncentral_f','stats_cdf_noncentral_t',
            'stats_cdf_normal','stats_cdf_poisson','stats_cdf_t',            'stats_cdf_uniform','stats_cdf_weibull','stats_covariance',
            'stats_dens_beta','stats_dens_cauchy','stats_dens_chisquare',            'stats_dens_exponential','stats_dens_f','stats_dens_gamma',
            'stats_dens_laplace','stats_dens_logistic','stats_dens_normal',            'stats_dens_pmf_binomial','stats_dens_pmf_hypergeometric',
            'stats_dens_pmf_negative_binomial','stats_dens_pmf_poisson',            'stats_dens_t','stats_dens_uniform','stats_dens_weibull',
            'stats_harmonic_mean','stats_kurtosis','stats_rand_gen_beta',            'stats_rand_gen_chisquare','stats_rand_gen_exponential',
            'stats_rand_gen_f','stats_rand_gen_funiform','stats_rand_gen_gamma',            'stats_rand_gen_ipoisson','stats_rand_gen_iuniform',
            'stats_rand_gen_noncenral_f','stats_rand_gen_noncentral_chisquare',            'stats_rand_gen_noncentral_t','stats_rand_gen_normal',
            'stats_rand_gen_t','stats_rand_getsd','stats_rand_ibinomial',            'stats_rand_ibinomial_negative','stats_rand_ignlgi',
            'stats_rand_phrase_to_seeds','stats_rand_ranf','stats_rand_setall',            'stats_skew','stats_standard_deviation','stats_stat_binomial_coef',
            'stats_stat_correlation','stats_stat_factorial',            'stats_stat_independent_t','stats_stat_innerproduct',
            'stats_stat_paired_t','stats_stat_percentile','stats_stat_powersum',            'stats_variance','strcasecmp','strchr','strcmp','strcoll','strcspn',
            'stream_bucket_append','stream_bucket_make_writeable',            'stream_bucket_new','stream_bucket_prepend','stream_context_create',
            'stream_context_get_default','stream_context_get_options',            'stream_context_set_default','stream_context_set_option',
            'stream_context_set_params','stream_copy_to_stream',            'stream_encoding','stream_filter_append','stream_filter_prepend',
            'stream_filter_register','stream_filter_remove',            'stream_get_contents','stream_get_filters','stream_get_line',
            'stream_get_meta_data','stream_get_transports',            'stream_get_wrappers','stream_is_local',
            'stream_notification_callback','stream_register_wrapper',            'stream_resolve_include_path','stream_select','stream_set_blocking',
            'stream_set_timeout','stream_set_write_buffer',            'stream_socket_accept','stream_socket_client',
            'stream_socket_enable_crypto','stream_socket_get_name',            'stream_socket_pair','stream_socket_recvfrom',
            'stream_socket_sendto','stream_socket_server',            'stream_socket_shutdown','stream_supports_lock',
            'stream_wrapper_register','stream_wrapper_restore',            'stream_wrapper_unregister','strftime','stripcslashes','stripos',
            'stripslashes','strip_tags','stristr','strlen','strnatcasecmp',            'strnatcmp','strpbrk','strncasecmp','strncmp','strpos','strrchr',
            'strrev','strripos','strrpos','strspn','strstr','strtok',            'strtolower','strtotime','strtoupper','strtr','strval',
            'str_ireplace','str_pad','str_repeat','str_replace','str_rot13',            'str_split','str_shuffle','str_word_count','substr',
            'substr_compare','substr_count','substr_replace','svn_add',            'svn_auth_get_parameter','svn_auth_set_parameter','svn_cat',
            'svn_checkout','svn_cleanup','svn_client_version','svn_commit',            'svn_diff','svn_export','svn_fs_abort_txn','svn_fs_apply_text',
            'svn_fs_begin_txn2','svn_fs_change_node_prop','svn_fs_check_path',            'svn_fs_contents_changed','svn_fs_copy','svn_fs_delete',
            'svn_fs_dir_entries','svn_fs_file_contents','svn_fs_file_length',            'svn_fs_is_dir','svn_fs_is_file','svn_fs_make_dir',
            'svn_fs_make_file','svn_fs_node_created_rev','svn_fs_node_prop',            'svn_fs_props_changed','svn_fs_revision_prop',
            'svn_fs_revision_root','svn_fs_txn_root','svn_fs_youngest_rev',            'svn_import','svn_info','svn_log','svn_ls','svn_repos_create',
            'svn_repos_fs','svn_repos_fs_begin_txn_for_commit',            'svn_repos_fs_commit_txn','svn_repos_hotcopy','svn_repos_open',
            'svn_repos_recover','svn_status','svn_update','symlink',            'sys_get_temp_dir','syslog','system','tan','tanh','tempnam',
            'textdomain','thread_get','thread_include','thread_lock',            'thread_lock_try','thread_mutex_destroy','thread_mutex_init',
            'thread_set','thread_start','thread_unlock','tidy_access_count',            'tidy_clean_repair','tidy_config_count','tidy_diagnose',
            'tidy_error_count','tidy_get_body','tidy_get_config',            'tidy_get_error_buffer','tidy_get_head','tidy_get_html',
            'tidy_get_html_ver','tidy_get_output','tidy_get_release',            'tidy_get_root','tidy_get_status','tidy_getopt','tidy_is_xhtml',
            'tidy_is_xml','tidy_parse_file','tidy_parse_string',            'tidy_repair_file','tidy_repair_string','tidy_warning_count','time',
            'timezone_abbreviations_list','timezone_identifiers_list',            'timezone_name_from_abbr','timezone_name_get','timezone_offset_get',
            'timezone_open','timezone_transitions_get','tmpfile',            'token_get_all','token_name','touch','trigger_error',
            'transliterate','transliterate_filters_get','trim','uasort',            'ucfirst','ucwords','uksort','umask','uniqid','unixtojd','unlink',
            'unpack','unregister_tick_function','unserialize','unset',            'urldecode','urlencode','user_error','use_soap_error_handler',
            'usleep','usort','utf8_decode','utf8_encode','var_dump',            'var_export','variant_abs','variant_add','variant_and',
            'variant_cast','variant_cat','variant_cmp',            'variant_date_from_timestamp','variant_date_to_timestamp',
            'variant_div','variant_eqv','variant_fix','variant_get_type',            'variant_idiv','variant_imp','variant_int','variant_mod',
            'variant_mul','variant_neg','variant_not','variant_or',            'variant_pow','variant_round','variant_set','variant_set_type',
            'variant_sub','variant_xor','version_compare','virtual','vfprintf',            'vprintf','vsprintf','wddx_add_vars','wddx_deserialize',
            'wddx_packet_end','wddx_packet_start','wddx_serialize_value',            'wddx_serialize_vars','win_beep','win_browse_file',
            'win_browse_folder','win_create_link','win_message_box',            'win_play_wav','win_shell_execute','win32_create_service',
            'win32_delete_service','win32_get_last_control_message',            'win32_ps_list_procs','win32_ps_stat_mem','win32_ps_stat_proc',
            'win32_query_service_status','win32_scheduler_delete_task',            'win32_scheduler_enum_tasks','win32_scheduler_get_task_info',
            'win32_scheduler_run','win32_scheduler_set_task_info',            'win32_set_service_status','win32_start_service',
            'win32_start_service_ctrl_dispatcher','win32_stop_service',            'wordwrap','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_parser_create',
            'xml_parser_create_ns','xml_parser_free','xml_parser_get_option',            'xml_parser_set_option','xml_parse_into_struct',
            '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',            'xmlrpc_decode','xmlrpc_decode_request','xmlrpc_encode',
            'xmlrpc_encode_request','xmlrpc_get_type','xmlrpc_is_fault',            'xmlrpc_parse_method_descriptions',
            'xmlrpc_server_add_introspection_data','xmlrpc_server_call_method',            'xmlrpc_server_create','xmlrpc_server_destroy',
            'xmlrpc_server_register_introspection_callback',            'xmlrpc_server_register_method','xmlrpc_set_type','xmltree',
            'xmlwriter_end_attribute','xmlwriter_end_cdata',            'xmlwriter_end_comment','xmlwriter_end_document',
            'xmlwriter_end_dtd','xmlwriter_end_dtd_attlist',            'xmlwriter_end_dtd_element','xmlwriter_end_dtd_entity',
            'xmlwriter_end_element','xmlwriter_end_pi','xmlwriter_flush',            'xmlwriter_full_end_element','xmlwriter_open_memory',
            'xmlwriter_open_uri','xmlwriter_output_memory',            'xmlwriter_set_indent','xmlwriter_set_indent_string',
            'xmlwriter_start_attribute','xmlwriter_start_attribute_ns',            'xmlwriter_start_cdata','xmlwriter_start_comment',
            'xmlwriter_start_document','xmlwriter_start_dtd',            'xmlwriter_start_dtd_attlist','xmlwriter_start_dtd_element',
            'xmlwriter_start_dtd_entity','xmlwriter_start_element',            'xmlwriter_start_element_ns','xmlwriter_start_pi','xmlwriter_text',
            'xmlwriter_write_attribute','xmlwriter_write_attribute_ns',            'xmlwriter_write_cdata','xmlwriter_write_comment',
            'xmlwriter_write_dtd','xmlwriter_write_dtd_attlist',            'xmlwriter_write_dtd_element','xmlwriter_write_dtd_entity',
            'xmlwriter_write_element','xmlwriter_write_element_ns',            'xmlwriter_write_pi','xmlwriter_write_raw','xpath_eval',
            'xpath_eval_expression','xpath_new_context','xpath_register_ns',            'xpath_register_ns_auto','xptr_eval','xptr_new_context','yp_all',
            'yp_cat','yp_errno','yp_err_string','yp_first',            'yp_get_default_domain','yp_master','yp_match','yp_next','yp_order',
            'zend_current_obfuscation_level','zend_get_cfg_var','zend_get_id',            'zend_loader_current_file','zend_loader_enabled',
            'zend_loader_file_encoded','zend_loader_file_licensed',            'zend_loader_install_license','zend_loader_version',
            'zend_logo_guid','zend_match_hostmasks','zend_obfuscate_class_name',            'zend_obfuscate_function_name','zend_optimizer_version',
            'zend_runtime_obfuscate','zend_version','zip_close',            'zip_entry_close','zip_entry_compressedsize',
            'zip_entry_compressionmethod','zip_entry_filesize','zip_entry_name',            'zip_entry_open','zip_entry_read','zip_open','zip_read',
            'zlib_get_coding_type'            ),
        4 => array(            'DEFAULT_INCLUDE_PATH', 'DIRECTORY_SEPARATOR', 'E_ALL',
            'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_CORE_ERROR',            'E_CORE_WARNING', 'E_ERROR', 'E_NOTICE', 'E_PARSE', 'E_STRICT',
            'E_USER_ERROR', 'E_USER_NOTICE', 'E_USER_WARNING', 'E_WARNING',            'ENT_COMPAT','ENT_QUOTES','ENT_NOQUOTES',
            'false', 'null', 'PEAR_EXTENSION_DIR', 'PEAR_INSTALL_DIR',            'PHP_BINDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_DATADIR',
            'PHP_EXTENSION_DIR', 'PHP_LIBDIR',            'PHP_LOCALSTATEDIR', 'PHP_OS',
            'PHP_OUTPUT_HANDLER_CONT', 'PHP_OUTPUT_HANDLER_END',            'PHP_OUTPUT_HANDLER_START', 'PHP_SYSCONFDIR',
            'PHP_VERSION', 'true', '__CLASS__', '__FILE__', '__FUNCTION__',            '__LINE__', '__METHOD__'
            )        ),
    'SYMBOLS' => array(        1 => array(
            '<'.'%', '<'.'%=', '%'.'>', '<'.'?', '<'.'?=', '?'.'>'            ),
        0 => array(            '(', ')', '[', ']', '{', '}',
            '!', '@', '%', '&', '|', '/',            '<', '>',
            '=', '-', '+', '*',            '.', ':', ',', ';'
            )        ),
    'CASE_SENSITIVE' => array(        GESHI_COMMENTS => false,
        1 => false,        2 => false,
        3 => false,        4 => false
        ),    'STYLES' => array(
        'KEYWORDS' => array(            1 => 'color: #b1b100;',
            2 => 'color: #000000; font-weight: bold;',            3 => 'color: #990000;',
            4 => 'color: #009900; font-weight: bold;'            ),
        'COMMENTS' => array(            1 => 'color: #666666; font-style: italic;',
            2 => 'color: #666666; font-style: italic;',            3 => 'color: #0000cc; font-style: italic;',
            4 => 'color: #009933; font-style: italic;',            'MULTI' => 'color: #666666; font-style: italic;'
            ),        'ESCAPE_CHAR' => array(
            0 => 'color: #000099; font-weight: bold;',            1 => 'color: #000099; font-weight: bold;',
            2 => 'color: #660099; font-weight: bold;',            3 => 'color: #660099; font-weight: bold;',
            4 => 'color: #006699; font-weight: bold;',            5 => 'color: #006699; font-weight: bold; font-style: italic;',
            6 => 'color: #009933; font-weight: bold;',            'HARD' => 'color: #000099; font-weight: bold;'
            ),        'BRACKETS' => array(
            0 => 'color: #009900;'            ),
        'STRINGS' => array(            0 => 'color: #0000ff;',
            'HARD' => 'color: #0000ff;'            ),
        'NUMBERS' => array(            0 => 'color: #cc66cc;',
            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',            ),
        'METHODS' => array(            1 => 'color: #004000;',
            2 => 'color: #004000;'            ),
        'SYMBOLS' => array(            0 => 'color: #339933;',
            1 => 'color: #000000; font-weight: bold;'            ),
        'REGEXPS' => array(            0 => 'color: #000088;'
            ),        'SCRIPT' => array(
            0 => '',            1 => '',
            2 => '',            3 => '',
            4 => '',            5 => ''
            )        ),
    'URLS' => array(        1 => '',
        2 => '',        3 => 'http://www.php.net/{FNAMEL}',
        4 => ''        ),
    'OOLANG' => true,    'OBJECT_SPLITTERS' => array(
        1 => '-&gt;',        2 => '::'
        ),    'REGEXPS' => array(
        //Variables        0 => "[\\$]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"
        ),    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
    'SCRIPT_DELIMITERS' => array(        0 => array(
            '<'.'?php' => '?'.'>'            ),
        1 => array(            '<'.'?' => '?'.'>'
            ),        2 => array(
            '<'.'%' => '%'.'>'            ),
        3 => array(            '<script language="php">' => '</script>'
            ),        4 => "/(?P<start><\\?(?>php\b)?)(?:".
            "(?>[^\"'?\\/<]+)|".            "\\?(?!>)|".
            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".            "(?>\"(?>[^\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".            "\\/\\/(?>.*?(?:\\?>|$))|".
            "#(?>.*?(?:\\?>|$))|".            "\\/(?=[^*\\/])|".
            "<(?!<<)|".            "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>".
            ")*?(?P<end>\\?>|\Z)/sm",        5 => "/(?P<start><%)(?:".
            "(?>[^\"'%\\/<]+)|".            "%(?!>)|".
            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".            "(?>\"(?>[^\\\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".            "\\/\\/(?>.*?(?:%>|$))|".
            "#(?>.*?(?:%>|$))|".            "\\/(?=[^*\\/])|".
            "<(?!<<)|".            "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>".
            ")*?(?P<end>%>|\Z)/sm",        ),
    'HIGHLIGHT_STRICT_BLOCK' => array(        0 => true,
        1 => true,        2 => true,
        3 => true,        4 => true,
        5 => true        ),
    'TAB_WIDTH' => 4);
 ?>

如果你是远程熟悉 PHP (或者即使你不是),您可以看到所有文件包括语言 一个称职的变量赋值。 简单! 所有的语言文件分配一个变量 language_data美元 。 虽然 仍然有很多索引数组…但这一部分来分解每个索引并解释给你。

4.2语言文件约定

有几个约定在语言文件中使用。 为了便于使用和可读性,你的语言 文件应该遵守以下规则:

  • 压痕是 4个空格 ,而不是标签: 使用空间! 标签应该有编辑continiously螺丝 没有标签在你的文件,因为它会以不同的方式在每台计算机。
  • 单引号的字符串: 每个字符串的语言文件应在单引号('),除非你是 指定一个单引号quotemark或转义字符,在这种情况下,它们可以在双引号 可读性; 或者你指定一个正则表达式(见下文)。 这确保了语言文件可以加载 尽可能快 PHP 可以避免不必要的解析。
  • 大数组多行: 有超过三个或四个数组值应该分为多个 行。 在任何情况下,线路不应超出一个全屏窗口(约100字符/ max行)。 不要打破关键词数组后,每一个字。
  • 在新的一行多行数组结束括号: 还用逗号,除非数组 最后一分之一父数组。 看到 PHP 语言文件的例子,使用逗号。
  • 使用 GeSHi 常量: capatalisation、正则表达式等使用 GeSHi 常数, 不 他们的实际值。
  • 逐字标题格式: 复制文件头逐字从其他语言文件和修改的值 之后。 不要试图发明自己的标题格式,作为你的其他语言将验证失败!

有更多的笔记在每一个公约,它可能出现在语言文件下面的部分。

4.3语言文件部分

本节将看一个语言文件的所有部分,以及它们与最后强调结果。

4.3.1的头

的 头 语言文件的第一行开始的大评论和变量 language_data美元 :

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
<?php
/************************************************************************************* * <name-of-language-file.php>
 * --------------------------------- * Author: <name> (<e-mail address>)
 * Copyright: (c) 2008 <name> (<website URL>) * Release Version: <GeSHi release>
 * Date Started: <date started> *
 * <name-of-language> language file for GeSHi. *
 * <any-comments...> *
 * CHANGES * -------
 * <date-of-release> (<GeSHi release>) *  -  First Release
 * * TODO (updated <date-of-release>)
 * ------------------------- * <things-to-do>
 * *************************************************************************************
 * *     This file is part of GeSHi.
 * *   GeSHi is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version. *
 *   GeSHi is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details.
 * *   You should have received a copy of the GNU General Public License
 *   along with GeSHi; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * ************************************************************************************/
 $language_data = array (

尖括号中的部分零件,你改变你的语言文件。 其他的一切 必须 保持不变!

这里是你应该改变的部分:

  • < name-of-language-file.php > ——这应该成为你的语言文件的名称。 语言文件名称 小写和只包含字母数字字符,破折号和下划线。 语言文件结尾。 php( 你应该把你的语言文件的名称,如language.php)
  • <名称> ——你的名字,或别名。
  • <电子邮件地址> ——你的电子邮件地址。 如果你想让你的语言文件包含 GeSHi 你 必须 包括电子邮件地址,是指一个收件箱由你控制。
  • <网站> ——你的网站的URL(可能处理的页面时,你的贡献 GeSHi ,或 你的主页/博客)
  • <起始日期> 你开始工作的日期在语言文件。 如果你不能记住,推测。
  • < name-of-language > ——语言的名称(可能类似于这种语言文件 语言文件名称)。
  • <任何评论> ——任何评论你必须做出关于这个语言文件,也许你的关键字, 语言这门语言文件的方言是什么等等。如果你没有任何评论,删除空间。
  • < date-of-release ——日期你向公众发布了语言文件。 如果你只寄给我包容 在一个新的 GeSHi 不要释放它,离开这个空白,我会替换它的日期 GeSHi 释放, 这是第一次加入。
  • < GeSHi释放> 这是发布的版本,将包含您所做的修改。 所以如果你有1.0.8版本 GeSHi 运行,这将是下一个版本发布,例如1.0.8.1。

一切都应该是相同的。

另外: 我不确定关于版权的一种新的语言文件。 我不是律师,可能会有人联系我 一门新的语言文件的版权是否应该排斥作者,或联合与我(如果包含在 GeSHi 释放)?

4.3.2第一个指标

这里有一个例子从php语言文件的第一个指标:

PHP代码
1
23
45
6
'LANG_NAME' => 'PHP',
'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),'COMMENT_MULTI' => array('/*' => '*/'),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '\\',

第一个指标是一个语言文件的前几行之前关键字索引。 这些指标指定:

  • “LANG_NAME” :语言的名称。 这个名字应该是一个人类可读版本的名字 (如。 HTML 4(过渡)而不是html4trans)
  • “COMMENT_SINGLE”: 数组的单行注释语言,由整数索引开始 从1。 一行注释标记的评论开始,直到最后。 这些 评论可以是任何长度> 0,因为他们可以单独的样式,可以用于其他事情比评论 (例如Java语言文件定义了“进口”一行注释)。 如果你的语言 使用“(撇号)评论(或在评论标记的地方),使用双引号。 如。 :“”
  • “COMMENT_MULTI”: 用于指定多行注释,数组形式的“开放”= >“关闭”。 不幸的是, 所有这些评论在这里添加相同的样式(改进的一个领域 GeSHi 1.2.X)。 这些注释标记可以是任何长度> 0。
  • “CASE_KEYWORDS”: 用于设置关键词的情况下是否应该改变自动发现。 例如,在一个SQL或基本方言你可能希望所有关键字是大写。 这是公认的价值观:
  • GESHI_CAPS_UPPER :所有关键词的情况下转换为大写。
  • GESHI_CAPS_LOWER :所有关键词的情况下转换为小写。
  • GESHI_CAPS_NO_CHANGE :不改变的情况下任何关键字。
  • “QUOTEMARKS”: 指定字符字符串的开始和结束标记。 这是另一个例子 如果你的语言包括“你应该用双引号字符串分隔符。
  • “ESCAPE_CHAR”: 指定所有字符串中使用的转义字符。 如果你的语言没有逃跑 字符然后让这个空字符串( ” )。 这不是一个数组! 如果发现任何字符之后 转义字符转义字符本身将突出显示不同,和后的字符 转义字符不能结束字符串。

在某些语言文件你可能看到的其他指标,但这些都是在以后处理。

4.3.3关键词

关键词将一种语言的大部分文件。 在这部分你为你的语言添加关键字,包括 内置函数,数据类型,预定义常量等等。

这里有一个例子(缩短)从php语言文件:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
40
'KEYWORDS' => array(
    1 => array(        'as', 'break', 'case', 'do', 'else', 'elseif', 'endif',
        'endswitch', 'endwhile', 'for', 'foreach', 'if', 'include',        'include_once', 'require', 'require_once', 'return',
        'switch', 'while'        ),
    2 => array(        '&lt;/script>', '&lt;?', '&lt;?php', '&lt;script language=',
        '?>', 'class', 'default', 'DEFAULT_INCLUDE_PATH', 'E_ALL',        'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_CORE_ERROR',
        'E_CORE_WARNING', 'E_ERROR', 'E_NOTICE', 'E_PARSE',        'E_USER_ERROR', 'E_USER_NOTICE', 'E_USER_WARNING',
        'E_WARNING', 'false', 'function', 'new', 'null',        'PEAR_EXTENSION_DIR', 'PEAR_INSTALL_DIR', 'PHP_BINDIR',
        'PHP_CONFIG_FILE_PATH', 'PHP_DATADIR', 'PHP_EXTENSION_DIR',        'PHP_LIBDIR', 'PHP_LOCALSTATEDIR', 'PHP_OS',
        'PHP_OUTPUT_HANDLER_CONT', 'PHP_OUTPUT_HANDLER_END',        'PHP_OUTPUT_HANDLER_START', 'PHP_SYSCONFDIR', 'PHP_VERSION',
        'true', 'var', '__CLASS__', '__FILE__', '__FUNCTION__',        '__LINE__', '__METHOD__'
        ),    3 => array(
        'xml_parser_create', 'xml_parser_create_ns',        'xml_parser_free', 'xml_parser_get_option',
        'xml_parser_set_option', 'xml_parse_into_struct',        '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', 'yp_all', 'yp_cat',        'yp_errno', 'yp_err_string', 'yp_first',
        'yp_get_default_domain', 'yp_master', 'yp_match', 'yp_next',        'yp_order', 'zend_logo_guid', 'zend_version',
        'zlib_get_coding_type'        )
    ),

你可以看到,该指数“关键词”指的是数组,数组索引的正整数。 在每一个数组, 有一些关键字(在实际的php语言文件实际上是有更多关键词数组中的索引,3)。 这里有一些点需要注意这些关键词:

  • 正整数索引: 用什么! 我可能会改变这个在1.2。 1.0 X,但。 X系列, 只使用正整数。 使用字符串时的性能退化导致不必要的开销 突出显示的代码和你的语言文件!
  • 关键字升序排序: 关键字 应该 按照 提升 秩序。 这主要是为 可读性。 1.0.8之前版本的问题已经解决,所以反向排序顺序 不再是必需的,因此应该被避免。 GeSHi 本身内部排序关键字的时候 建筑的一些缓存,所以顺序并不重要,但是会让事情更容易阅读和维护。
  • 关键字区分大小写(有时): 如果你的语言是区分大小写的,正确的套管 关键字定义为关键字的情况下在这些关键词数组。 如果你检查你的java语言文件 会发现一切都在确切的套管。 如果任何这些关键词数组是大小写敏感的,把 关键词作为正确的情况下! (注意,哪个组是大小写敏感的,哪个不是是可配置的, 见以后)。 如果关键字组是不分大小写,把这里的小写版本的关键字 或 如果文档链接需要一个特殊套管(不是所有的小写或大写) 他们使用套管所需的套管。
  • 关键字必须在 而且不会 形式: 所有的关键词都应该写成如果他们 运行php函数 而且不会 。 E。 g,关键字 & lt; 喷火 比; ,而不是 < foo >
  • 不要使用关键词强调符号: 只是不! ! ! 它不工作,有独立的支持 以来的符号 GeSHi 1.0.7.21。
  • 标记语言是特殊情况: 检查html4strict语言文件的一个例子:你需要调整 解析器控制在这里告诉tagname的环境。 如果疑问,请提出来。

4.3.4符号和敏感性

所以你把所有的关键词你的语言吗? 现在呼吸之前风格:)。 符号定义 什么符号你的语言使用。 这些是冒号,括号/括号和其他标点符号。 没有字母数字的东西属于这里,只是没有符号一样属于关键字部分。

的 GeSHi 版本1.0.7.21符号部分可以用在两个方面:

平的用法:
这种模式的建议方法是对现有的语言文件和语言,只需要几个符号,没有 需要进一步的分化或期望。 你只是把所有的字符数组在符号如图所示 在第一个示例中所示。 所有的符号在平面使用属于符号样式组0。
集团的用法:
这是一个稍微增强的方式提供 GeSHi 符号信息。 使用组创建几个子阵 每只包含符号来突出的一个子集。 每个数组需要这样一个独特的指标 稍后您可以指定适当的风格。

这里有一个例子为平面符号使用

PHP代码
1
23
'SYMBOLS' => array(
  '(', ')', '[', ']', '{', '}', '!', '@', '|', '&', '+', '-', '*', '/', '%', '=', '<', '>'),

这不是太新引入不同组使用如下所示:

PHP代码
1
23
45
6
'SYMBOLS' => array(
  0 => array('(', ')', '[', ']', '{', '}')1 => array('!', '@', '|', '&'),
  2 => array('+', '-', '*', '/', '%')3 => array('=', '&lt;', '>')
),
注意:

请注意,版本1.0.7.21之前将默默地忽略此设置。

还要注意, GeSHi 1.0.7.21本身有一些错误可能导致的突出象征 严重炒代码输出。

下面的案例敏感性组提到关键词部分:在这里你可以设置哪些关键字组是大小写敏感的。

在 “CASE_SENSITIVE” 集团有一个特殊的关键 GESHI_COMMENTS 用于设置评论是否 是否区分大小写(例如,基本的REM声明而不是大小写敏感的仍然是字母数字,和 之前的例子关于Java语言文件使用“导入”一行评论,这个可以 有时有用。真正的 如果评论是大小写敏感的, 假 否则。 所有其他的指数 对应的指标 “关键词” 部分(见上图)。

4.3.5风格为你的语言文件

这是有趣的部分! 在这里你可以选择颜色、字体、背景和其他任何你想为你的 语言文件。

这里有一个例子:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
'STYLES' => array(
    'KEYWORDS' => array(        1 => 'color: #b1b100;',
        2 => 'color: #000000; font-weight: bold;',        3 => 'color: #000066;'
        ),    'COMMENTS' => array(
        1 => 'color: #808080; font-style: italic;',        2 => 'color: #808080; font-style: italic;',
        'MULTI' => 'color: #808080; font-style: italic;'        ),
    'ESCAPE_CHAR' => array(        0 => 'color: #000099; font-weight: bold;'
        ),    'BRACKETS' => array(
        0 => 'color: #66cc66;'        ),
    'STRINGS' => array(        0 => 'color: #ff0000;'
        ),    'NUMBERS' => array(
        0 => 'color: #cc66cc;'        ),
    'METHODS' => array(        0 => 'color: #006600;'
        ),    'SYMBOLS' => array(
        0 => 'color: #66cc66;'        ),
    'REGEXPS' => array(        0 => 'color: #0000ff;'
        ),    'SCRIPT' => array(
        0 => '',        1 => '',
        2 => '',        3 => ''
        )    ),

注意所有样式规则应该以分号结束! 这是很重要的: GeSHi 需要添加额外的规则的规则吗 指定(如果用户试图改变你的风格在飞行中),所以最后一个分号任何样式表 规则是很重要的!

这里所有的字符串应该包含有效的样式表声明(这也是好空字符串)。

  • “关键词”: 这是一个数组,从关键词索引的风格。 该指数你用于使用索引 关键词部分指定关键词属于这个群体。
  • “评论”: 这是一个数组,从单行注释索引风格指数。 该指数是“多” 用于多行注释(不能一个数组)。 COMMENT_REGEXP使用风格给他们的关键 如果他们是单行注释。
  • “ESCAPE_CHAR”、“括号”和“方法”: 这些都是数组只有一个指数:0。 你不能添加其他指标 这些数组。
  • “字符串”: 它定义了不同风格的Quotemarks你前面定义。 如果你不使用 多个风格字符串只有一个指数:0。 也请添加这个指数,以防没有字符串。
  • “数字”: 这个设置样式用来强调数字。 这里使用的格式取决于所使用的格式 设置格式的数字来突出。 如果您仅使用一个整数(位掩码)的数字,你必须 指定一个关键与相应的常数,和\或包含一个关键0作为一个默认的样式。 如果你使用一个 数组标记数量,复制键使用,并分配相应的风格。
  • “符号”: 这提供了一个关键你上面定义为每个符号组。 如果你使用平面使用 一定要包括一个关键的符号组0。
  • “regexp”: 这是一个数组,样式为每个匹配的正则表达式。 同时,由于1.0.7.21,您可以指定 被称为一个函数的名称,将给定的正则表达式的文本匹配,每次找到匹配。 请注意,我的测试发现 create_function 这个由于不工作吗 PHP错误,所以你必须 把函数定义语言文件的顶部。 前缀的函数名称 与 geshi_ languagename _ 与其他功能不冲突!
  • “脚本”: 使用脚本语言分隔符,这是每个块脚本,您可以在样式。 为 的例子, HTML 和 XML 块,从<开始和结束与>(即标记)和块开始与& 结尾; (即字符实体),您可以设置一个样式应用到每个整个街区。 您指定的 分隔符为下面的块。 注意,许多语言不需要这个功能。

4.3.6 url功能

这部分允许您指定一个url访问每个字组。 有用的功能指向他们的在线 手动条目。

这是一个例子:

PHP代码
1
23
45
6
'URLS' => array(
    1 => '',    2 => '',
    3 => 'http://www.php.net/{FNAME}',    4 => ''
    ),

这个数组的索引对应关键字部分中指定的关键字组。 的字符串 {帧} 是函数的名称替换的地方。 对于上面的示例,如果关键字高亮显示 “回声”,那么关键字将URL指向 http://www.php.net/echo 。 因为有些语言(Java)没有 保持统一的函数/类的URL,你可能在创建一个URL,语言有困难(尽管看看 java语言申请一个新颖的解决问题)

4.3.7强调数量支持

如果你的语言支持不同格式的数字(例如,整数和浮点数表示),你想要的 GeSHi 以不同的方式处理它们你可以选择从一组预定义的格式。

PHP代码
1
23
4
    'NUMBERS' =>
        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,

所有你想要的格式 GeSHi 认识到选择通过一个由位和ing的位掩码格式常数。 当样式你使用这些常量分配适当的风格。 风格不分配将自动回退风格组0。

注意:

支持的格式的完整列表 GeSHi 有一个调查geshi.php的来源。

如果你想定义您自己的格式为数字或当你想组风格两个或两个以上的格式可以使用数组语法。

PHP代码
1
23
45
67
    'NUMBERS' => array(
        1 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE,        2 => GESHI_NUMBER_BIN_PREFIX_0B,
        3 => GESHI_NUMBER_OCT_PREFIX,        4 => GESHI_NUMBER_HEX_PREFIX,
        5 => GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO        ),

这将创建5样式组1 . . 5,将突出每个指定的格式为每个组。 样式组不使用常量,但使用刚才定义的指标。

而不是使用这些预定义常量你也可以指定一个PCRE相匹配的数量当使用这种先进的格式。

注意:

扩展格式没有详尽的测试。 所以小心的bug。

为4.3.8面向对象支持

现在我们到达最冷僻的部分的一个语言文件,其中包括面向对象等好处 支持和环境支持。 GeSHi 能突出方法和数据字段的对象,所有你需要做的是吗 告诉它,什么是“分流”之间的对象和方法等。

这里有一个例子:

PHP代码
1
2
'OOLANG' => true,
'OBJECT_SPLITTER' => '-&gt;',

如果你的面向对象语言,的价值 “OOLANG” 是真的,否则它是假的。 如果它是对象 导向, “OBJECT_SPLITTER” 你把价值 htmlentities() 版本之间的“分流” 对象和方法/字段。 如果它不是,那么把这个空字符串。

4.3.9使用正则表达式

正则表达式是一个好方法去赶其他词汇的符合一定的规则但不能列为关键字。 变量是一个很好的例子 PHP :变量总是从一个或两个“$”符号,字母数字 字符(简化)。 这很容易用正则表达式。

和新版本1.0.2中,是一种先进的方式使用正则表达式捕捉某些东西,但是亮点 只有这些东西的一部分。 这是特别有用的语言 XML 

警告:

正则表达式使用PCRE语法(perl风格), 不 的 ereg 风格!

这里有一个例子(这一次 PHP 文件合并 XML 文件):

PHP代码
1
23
45
67
89
1011
1213
1415
0 => array(
    GESHI_SEARCH => '(((xml:)?[a-z\-]+))(=)',    GESHI_REPLACE => '\\1',
    GESHI_MODIFIERS => '',    GESHI_BEFORE => '',
    GESHI_AFTER => '\\4'    ),
1 => array(    GESHI_SEARCH => '(>/?[a-z0-9]*(>)?)',
    GESHI_REPLACE => '\\1',    GESHI_MODIFIERS => '',
    GESHI_BEFORE => '',    GESHI_AFTER => ''
    ),2 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"

正如你所看到的有两种格式。 一个是“简单的”格式中使用 GeSHi < 1.0.2,另一个是更多 先进的语法。 首先,简单的语法:

  • 可能是在双引号: 为了方便那些总是在双引号把正则表达式, 你可以把任何正则表达式在双引号如果你的愿望。
  • 尽可能不要使用花括号: 如果你想使用花括号( () ),那么通过各种方法试一试, 但我不确定是否在某些情况下 GeSHi 可能不稳定。 我已经警告过你了! 如果你想 使用括号,最好是使用先进的语法。
  • 不要用“一切”正则表达式: (这是 . * ? 正则表达式)。 使用先进的语法。

现在高级语法,这给了你更多的控制正是强调:

  • GESHI_SEARCH: 该元素指定了正则表达式搜索。 如果你计划来捕获输出, 使用括号( () )。 看到在上面的第一个例子中,大部分的正则表达式是在一组括号 在其他括号(等号)。 你应该确保正则表达式的一部分 应该强调的是在括号中。
  • GESHI_REPLACE: 这就是东西匹配的正则表达式将取而代之。 如果你 组合你想要的东西突出显示在括号GESHI_SEARCH元素,那么您可以使用 \ \数量 组匹配, 数量 是一个数字对应于有多少开括号之间的开放 支架组的你想要强调和GESHI_SEARCH字符串+ 1的开始。 这听起来可能令人困惑, 也许是,但如果你熟悉如何 PHP 正则表达式的工作你应该理解。 在 例中,我们想要的东西突出的开括号是第一个括号的字符串,所以 括号前支架和字符串的开始是0。 所以我们加1并得到更换 串 \ \ 1 (哇!) 

如果你不懂一个单词,确保有括号的字符串 GESHI_SEARCH 和使用 \ \ 1 为 GESHI_REPLACE ,)

  • GESHI_MODIFIERS: 为你的正则表达式指定修饰符。 如果你的正则表达式包括 所有的匹配器( . * ? ),那么你的修饰符应该包括“s”和“我”(例如,使用“si”)。
  • GESHI_BEFORE: 指定一个支架组应该出现在匹配(这将集团将突出显示 不强调)。 使用这个如果你有比赛你想要通过匹配正则表达式字符串的一部分 之前你想突出什么,你不想让那部分消失在高亮显示的结果。
  • GESHI_AFTER: 指定一个支架组应该出现在匹配(这将集团将突出显示 不强调)。 使用这个如果你有比赛你想要通过匹配正则表达式字符串的一部分 后你想突出什么,你不想让那部分消失在高亮显示的结果。

这是完全混乱吗? 这是测试是否你是一个android:如果你发现完全可以理解 然后你一个android;)。 这里有一个更好的例子:

假设我使一种语言,和变量在这门语言当中总是开始于一个美元符号($),总是 用小写字母写的,总是与字符(&)。 例如:

$ foo “酒吧”

我想强调 只和与美元之间的文本 。 我该怎么做? 使用简单的正则表达式我不能, 但随着先进,这是相对简单的:

PHP代码
1
23
45
67
89
1011
1213
14
1 => array(
    // search for a dollar sign, then one or more of the characters a-z, then an ampersand    GESHI_SEARCH => '(\$)([a-z]+)(&)',
    // we wanna highlight the characters, which are in the second bracketed group    GESHI_REPLACE => '\\2',
    // no modifiers, since we're not matching the "anything" regex    GESHI_MODIFIERS => '',
    // before the highlighted characters should be the first    // bracketed group (always a dollar sign in this example)
    GESHI_BEFORE => '\\1',    // after the highlighted characters should be the third
    // bracketed group (always an ampersand in this example)    GESHI_AFTER => '\\3'
    ),

如果有人试图强调使用我的语言,所有的病例 $ foo 会变成:

美元 跨度 风格 “颜色:蓝色; 喷火 跨度 > < 跨度 风格 颜色:绿色。“ 跨度 >

(当然是在浏览器中查看类似 $ foo )

4.3.10上下文突出和严格的模式

这样的语言 HTML 很好,如果我们可以突出一个标签(如 一个 例如)。 但是我们如何停止 每一个“源”越来越突出? 为属性呢? 如果我有“colspan”这个词在我 文本我不想要了! 所以你如何告诉 GeSHi 不强调在这种情况下吗? 你用“严格块”。

这是一个例子:

PHP代码
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
<? /* ... */
'STRICT_MODE_APPLIES' => GESHI_MAYBE,'SCRIPT_DELIMITERS' => array(
    0 => array(        '<?php' => '?>'
        ),    1 => array(
        '<?' => '?>'        ),
    2 => array(        '<%' => '%>'
        ),    3 => array(
        '<script language="php">' => '</script>'        )
    4 => "/(<\?(?:php)?)(?:'(?:[^'\\\\]|\\\\.)*?'|\"(?:[^\"\\\\]|\\\\.)*?\"|\/\*(?!\*\/).*?\*\/|.)*?(\?>|\Z)/sm",    5 => "/(<%)(?:'(?:[^'\\\\]|\\\\.)*?'|\"(?:[^\"\\\\]|\\\\.)*?\"|\/\*(?!\*\/).*?\*\/|.)*?(%>|\Z)/sm"
    ),'HIGHLIGHT_STRICT_BLOCK' => array(
    0 => true,    1 => true,
    2 => true,    3 => true,
    4 => true,    5 => true
    )/* ... */ ?>

严格模式是什么? 严格模式说,强调只有发生在您所指定的块。 你可以看到从 上面的例子强调只会发生,如果里面的源 < ? php … ? > (但注意 GESHI_MAYBE !) 这里有一些关于严格强调指出:

  • “STRICT_MODE_APPLIES”: 这需要三个值(常量):
    • GESHI_ALWAYS :严格模式总是适用于所有您所指定的块。 你的语言的用户 文件不能关掉严格模式。这应该是用来标记语言。
    • GESHI_NEVER :严格模式是从未使用过。 你的语言的用户文件不能打开严格模式。 使用这个 如果没有所谓的价值不会突出显示的代码块在你的语言 (大多数语言,像C、Java等使用这个,因为任何一个C文件应该突出显示)。
    • GESHI_MAYBE :有时严格模式* *适用。 它默认为“关闭”。 用户可以打开如果严格模式 请他们。 如果严格模式了那么一切源将突出显示,即使外面的事情 严格的块标记。 如果严格模式是没有外严格块标记将被突出显示。
  • “SCRIPT_DELIMITERS”: 这是一个脚本分隔符数组,上面的格式。 使用的指标 “脚本”风格的一部分部分强调一切以某种方式在一个严格的块。 例如,您可以设置您的语言文件进行任何代码在一个严格的黄色背景 阻止这种方式。 分隔符的形式 “开放” = > “关闭” 。 分隔符可以是任何 长度> 0。 分隔符是 不 格式化就像运行通过 而且不会 !
  • “HIGHLIGHT_STRICT_BLOCK”: 指定是否强调应该在每个块。 大部分的 这应该是真的,但例如, XML 语言文件高亮显示是关闭的 开头的块 < ! DOCTYPE 和结束 。 然而,你仍然可以 风格的整体块使用上面描述的方法,和XML 语言文件就是干这个的。
注意:

分隔符应 颠倒字母顺序 。 注意,在上面的例子中, < ? php 之前 < ? 

自 GeSHi 1.0.8代替指定数组与起动器和安德还可以提供一个正则表达式 相匹配 完整的块 你想突出。 如果正则表达式匹配在同一位置开始 作为一个之前的数组声明的Regexp匹配。 这是允许一个备用preg_match 并不像预期的那样工作所以你仍然得到相当不错的结果。

如果你没有得到这个,你可能想看看 PHP 或 HTML 这个特性是使用语言文件 修复一些问题已经有大约3年了。

警告:

为 PHP 版本< 4.3.3严格块regexp是完全忽略了由于这些版本的问题 否则,会导致大量的警告消息。

4.3.11特殊解析器设置(实验)

有时有必要的语言来呈现正确调整的一些假设 GeSHi 通常使匹配你的语言行为的预期。 为实现这一目标有一个实验章节 “PARSER_CONTROL” 这是可选的,应该只在必要时使用。 在本节的一些内部参数的帮助 GeSHi 可以设置不overrideable通过API,因此他们应该尽可能有限使用。

的语法 PARSER_CONTROL 基本上类似于数组结构模拟的一个语言文件的其余部分中找到。 的所有部分 PARSER_CONTROL 是可选的。 如果一个给定的设置不是通常的默认值 GeSHi 使用。 不执行的验证设置这些设置。 还要注意,默默地忽略未知的设置。

警告:

所有 PARSER_CONTROL 设置实验和可能发生变化。 如果你需要一个特殊的设置在公共语言文件你应该考虑请求上游。 这也是为什么这些设置文档只会覆盖广泛使用信息作为底层实现可能会改变而不另行通知。

最常见的一个原因你可能想要使用 PARSER_CONTROL 设置是调整字符可以围绕一个关键字。 通常 GeSHi 检查一组固定的字符括号和常见的符号表示的词界关键字。 如果这与你的语言冲突(例如,允许在一个关键字)或你想要限制使用某些领域(例如一个关键字 HTML 标签名称后仅匹配<)你可以改变这些条件。

关键字边界规则可以设定全球(直接在PARSER_CONTROL关键词的部分或在每个小组的基础上。 例如下面的样本 HTML 语言文件设置不同的关键词设置的关键字匹配只有组2和树叶其他团体。

PHP代码
1
23
45
67
8
    'PARSER_CONTROL' => array(
        'KEYWORDS' => array(            2 => array(
                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\/)',                'DISALLOWED_AFTER' => '(?=\s|\/|&gt;)',
            )        )
    )
注意:

这个名字 “DISALLOWED_BEFORE” 和 “DISALLOWED_AFTER” 起初听起来可能令人困惑,因为他们不定义防止,但为了找到一个关键字相匹配。 这个奇怪的命名的原因是基于原始实现的这个功能当奈杰尔这个旧解析器静态执行。 当这实现了通过 PARSER_CONTROL 设置最初的命名并不改变因为当时这真的是一个黑名单的字符。 后来这个实现了从黑名单的字符PCRE正则表达式的一部分,但离开的名字。 命名可能会受到改变。

另一个选项你可以改变 GeSHi 1.0.8.3是否治疗空间内关键词作为文字(只有一个空格),或者如果空间应该在这个位置匹配任何空白。 下面的代码将使这种行为对整个关键字设置。正如上面说的你可以选择启用这个仅供单关键字组。

PHP代码
1
23
45
    'PARSER_CONTROL' => array(
        'KEYWORDS' => array(            'SPACE_AS_WHITESPACE' => true
        )    ),

感兴趣的另一个选择可能会禁用某些功能对于一个给定的语言。 这可能派上用场如果你正在研究的语言文件不支持一个给定的函数或强调某些方面不正常工作或干扰自定义实现使用正则表达式。

PHP代码
1
23
45
67
89
1011
12
    'PARSER_CONTROL' => array(
        'ENABLE_FLAGS' => array(            'ALL' => GESHI_NEVER,
            'NUMBERS' => GESHI_NEVER,            'METHODS' => GESHI_NEVER,
            'SCRIPT' => GESHI_NEVER,            'SYMBOLS' => GESHI_NEVER,
            'ESCAPE_CHAR' => GESHI_NEVER,            'BRACKETS' => GESHI_NEVER,
            'STRINGS' => GESHI_NEVER,        )
    )

在 “ENABLE_FLAGS” 部分遵循的数组 “名字” = > 价值 对。 有效的名字,下面的部分 “风格” 部分(不完全是,但是你可以看到里面的特性叫做什么 GeSHi )。 有效的值 GeSHi 常量 GESHI_NEVER (别过程这一功能), GESHI_ALWAYS(总过程这一特性,忽略了用户) GESHI_MAYBE (听用户如果这是他想要突出显示)。 的值 GESHI_MAYBE 是默认的,因此不需要设置影响。

另一个设置可以通过 PARSER_CONTROL 设置是可能限制允许的字符前一行评论。

PHP代码
1
23
45
    'PARSER_CONTROL' => array(
        'COMMENTS' => array(            'DISALLOWED_BEFORE' => '$'
        )    )

与当前实现DISALLOWED_BEFORE COMMENT-specific设置字符的列表。 但这是可能发生变化。

注意:

没有 “DISALLOWED_AFTER” 设置的 “评论” - - - - - - PARSER_CONTROL 

另一个 PARSER_CONTROL 设置一定的句法结构周围的环境指的是面向对象语言的处理。

PHP代码
1
23
45
67
    'PARSER_CONTROL' => array(
        'OOLANG' => array(            'MATCH_BEFORE' => '',
            'MATCH_AFTER' => '[a-zA-Z_][a-zA-Z0-9_]*',            'MATCH_SPACES' => '[\s]*'
        )    )
警告:

请注意,在这一节中讨论的设置实验和可能被改变,删除或改变的意义。

4.3.12整理

所有语言文件应该:

PHP代码
1
23
);
 ?>

这是字符串的内容 ” \ n ); \ n ? > \ n ” 

警告:

确保有一个linebreak字符。 如果你意外地包括更多 最终你可能会像“头已经派”的消息。

4.4验证你的语言文件

自 GeSHi 1.0.8有一个新的脚本 langcheck.php 在contrib目录扫描 语言文件中发现geshi /的子目录 GeSHi 安装错误。

请确保你的语言不包含任何错误,该脚本显示在发送 您的语言文件包含到官方版本,因为这可以节省包括你的文件时为我们工作。 还可以肯定的是你的语言文件将按预期工作一旦你的语言文件验证正确。

请注意,并不是所有的语言文件附带 GeSHi 是完全有效的,但我们正在努力吗 ,每片我们得到快乐!

5 /常数参考方法

恐怕我已经躺一会儿吧! 1.0.7以来我一直包括phpdoc API 的源代码里 api 目录,但忘了更新文档! 然而,它是可用的, 和可能帮助您的编码,特别是对于插件编码人员。


这是所有人!

我从版本1.0.1大大地提高了该文档,但是仍可能有问题,或者它可能仍然 为你感到困惑。 或者我只是错误的一个点! 如果是这样的话,联系我,我会尽力解决它。

如果你有什么疑惑,我完成了1.0的发展。 X线 GeSHi 。 我唯一会释放 线程将bug修复/添加语言文件的类型。 特别是,1.0.2版是一个“概念”释放——测试 多久我可以把突出的想法(以及别人的想法)。

我计划1.2的代码重写。 X,这将基于一个新的引擎——“psuedo-tokenizer”引擎。 希望 它将大大降低服务器负载和时间(几乎消除regexp),同时提供 优越的高亮显示。 但是不要害怕! 接口和方法名称都应该保持不变^ _ ^(虽然我不能 说相同的语言文件!)

最后,一些人一直在问我:你是怎么生成的文档吗? 神奇的回答是:我 大脑。 是的,它花了很长时间,我不推荐这样做。 是的,你可以借的样式 你喜欢,尽管电影我如果你的电子邮件。

总之,从我足够的废话。 得到 GeSHi 为你工作了! :D

作者:
©2004 - 2007 奈杰尔McNie
©2007 - 2012 本尼鲍曼
©2008 - 2009 米莲沃尔夫
GeSHi 网站:
http://qbnz.com/highlighter

  1. PRE头(见 容器的代码 )是无效的 HTML ,您可能希望 使用的另一个头类型。 

  2. 支持是授予 PHP 4.3.0以上,特别是4.3。 不能保证x 由于缺乏测试系统工作。 如果你是被迫使用这样的老 PHP 抱怨你的主机或版本 联系我们如果你发现兼容性问题所以我们可以试着解决它们。 这只是 PHP 4.4。 X和上面 验证工作。 

  3. 我不再在国防部工作,但是如果别人想他们可以联系我 信息。 

  4. 仅作为插件可用。 此外,一些其他的条目 这里只能有 GeSHi 作为一个插件。

posted @ 2017-10-16 20:13  Endv  阅读(462)  评论(0编辑  收藏  举报