linux php 语法加亮,用javascript函数PHP语法加亮

2023-10-08 03:30

本文主要是介绍linux php 语法加亮,用javascript函数PHP语法加亮,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

用javascript函数PHP语法加亮

作者:大鹏 发布于:2006-9-25 12:17 Monday

分类:JavaScript与HTML

[code]

//=====================================

// 功能 PHP语法加亮函数

// author:ice_berg16(寻梦的稻草人)

// lastModified:2005-6-29

// copyright(c)2005 ice_berg16@163.com

//=====================================

function highlight_string( str )

{

//add a new prototype function to array

Array.prototype.exist = function(v)

{

for(k=0;k

{

if(this[k].toLowerCase() == v.toLowerCase())

return true;

}

return false;

}

//base variable

var operator = "><=,()[].+-*/!&|^~?{};:";

var keyword  = ['and','or','__FILE__','exception','__LINE__','array','as','break','case','class','const',

'continue','declare','default','die','do','echo','else','elseif','empty','enddeclare','endfor',

'endforeach','endif','endswitch','endwhile','eval','exit','extends','for','foreach','function',

'global','if','include','include_once','isset','list','new','old_function','print','require',

'require_once','return', 'static','switch','unset','var','while','__FUNCTION__','__CLASS__',

'__METHOD__','true','false','null'];

var inString = false;

var inSLComment = false; //single line comment

var inMLComment = false; //multiline comment

var delimiter = null;

var startPos = null;

var word  = "";

var res = "";

//start to format

for(i=0;i

{

if( inString ) //we are in string

{

//the word cache will be clear

if(word != "") //we check the word cache if it the key word

{

if( keyword.exist(word) ) //its php reversed keyword,rend color

res+= rendColor(word, 'keyword');

else

res+= word;

word = "";

}

//alert('inString,pos is '+ i+',char is '+c );

fromPos = startPos+1;

while(1)

{

//we find the end of current string

p = str.indexOf( delimiter, fromPos );

//we got the end of the code

if( p == -1 )

{

curstr = str.substr( startPos );

res += rendColor( curstr, 'string' );

i = str.length;

break;

}

if( p != -1 && str.charAt(p-1) != "\\" )

{

i = p+1;

curstr  = str.substring(startPos, i ); //get the current string

res += rendColor( curstr, 'string' ); //rend color for it and add it to the result

inString = false; //we have go out of the string

startPos = null;

break;

}

else

{

fromPos = p+1;

}

}

}

if( inSLComment ) //we are in Single line comment

{

if(word != "") //we check the word cache if it the key word

{

if( keyword.exist(word) ) //its php reversed keyword,rend color

res+= rendColor(word, 'keyword');

else

res+= word;

word = "";

}

//alert('inSLComment,pos is '+ i+',char is '+c );

p = str.indexOf( "\n", i );

if( p != -1 ) //we find the end of line

{

i = p;

curstr = str.substring( startPos, p );

res += rendColor( curstr, 'comment' );

startPos = null;

inSLComment = false;

}

else

{

curstr = str.substr( startPos );

res += rendColor( curstr, 'comment' );

i = str.length;

}

}

if( inMLComment ) //we are in multiline comment

{

if(word != "") //we check the word cache if it the key word

{

if( keyword.exist(word) ) //its php reversed keyword,rend color

res+= rendColor(word, 'keyword');

else

res+= word;

word = "";

}

//alert('inMLComment,pos is '+ i+',char is '+c );

p = str.indexOf( "*/", startPos+2 );

if( p != -1 ) //we find the end of line

{

i = p+2;

curstr = str.substring(startPos, i );

res += rendColor( curstr, 'comment' );

startPos = null;

inMLComment = false;

}

else

{

curstr = str.substr( startPos );

res += rendColor( curstr, 'comment' );

i = str.length;

}

}

var c  = str.charAt(i); //current char

var nc = str.charAt(i+1);//next char

switch( c )

{

case '/':

if( nc == '*' ) // we go into the multiline comment

{

inMLComment = true;

startPos = i;

}

if( nc == "/" ) //we are in single line comment

{

inSLComment = true;

startPos = i;

}

//alert('we are in switch,pos is '+i+', and char is'+ c);

break;

case '#':

inSLComment = true; //we go into the single line comment

startPos = i;

break;

case '"':

inString = true;

delimiter = '"';

startPos = i;

break;

case "'":

inString = true;

delimiter = "'";

startPos = i;

break;

default:

if( /[\w$]/.test(c) )  //the keyword only contains continuous common char

{

word += c;   //cache the current char

}

else

{

if(word != "") //we check the word cache if it the key word

{

if( keyword.exist(word) ) //its php reversed keyword,rend color

res+= rendColor(word, 'keyword');

else

res+= word;

word = "";

}

//now the current char is not common char, we process it

if( operator.indexOf(c) != -1 ) // the char is a operator

res += rendColor(c, 'operator' );

else

res += c;

}

break;

}

}

$t = "    ";

$b = " ";

res = res.replace(/^( +)/g, function($1){c = $1.length;str="";while(--c>=0)str+=$b;return str});

res = res.replace(/(\t| ){2,}/g, function($0){c=$0.length;str="";while(--c>=0){if($0.charAt(c)=='\t')str+=$t;else str+=$b;}return str;});

res = res.replace(/\t/g,$t);

res = res.replace(/\n/g, "\n

");

res = '

  1. ' + res + '
';

//alert(res);

return res;

}

//对字符串中的HTML代码编码

function HTMLEncode( str )

{

str = str.replace(/&/g, '&');

str = str.replace(/

str = str.replace(/>/g, '>');

return str;

}

//根据字符串所属类型渲染不同的着色

function rendColor( str, type )

{

var commentColor = "#FF8000";

var stringColor  = "#DD0000";

var operatorColor= "#007700";

var keywordColor = "#007700";

var commonColor  = "#0000BB";

var useColor  = null;

str = HTMLEncode( str );

//we will rend what color?

switch( type )

{

case 'comment':

useColor  = commentColor;

break;

case 'string':

useColor = stringColor;

break;

case 'operator':

useColor  = operatorColor;

break;

case 'keyword':

useColor  = keywordColor;

break;

default:

useColor  = commonColor;

break;

}

if( str.indexOf("\n") != -1 ) //there are more than one line

{

arr = str.split("\n");

for(j=0;j

{

arr[j] = ""+ arr[j] + "";

}

return arr.join("\n");

}

else

{

str = ""+ str + "";

return str;

}

}[/code]

et_highlighter

发表评论

昵称

邮箱

网址

干净网络从你做起,切勿黏贴小广告

d5ab31d1e4534f94abf3d1cff3767a21.png

这篇关于linux php 语法加亮,用javascript函数PHP语法加亮的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_31848413/article/details/116420460
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/162406

相关文章

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注