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 

转载于:https://www.cnblogs.com/endv/p/7678627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值