PHP高亮显示 XML 源代码

27、PHP开发中的持续集成与XML解析 本文介绍了PHP开发中持续集成的实践,包括使用Jenkins进行自动化构建和部署,以及相关的版本控制、静态分析和构建自动化工具。此外,还详细讲解了XML的基本概念、模式定义以及使用SimpleXML解析和处理XML文档的方法,旨在帮助开发者提升代码质量和开发效率。 阅读详情
它将说明如何外部实体指向处理器来包含和解析其它文档,如何处理 PIs,以及一种确定包含有 PIs 的代码的可信度。

  能被该范例使用的的 XML 文档(xmltest.xml 和 xmltest2.xml)被列在该范例之后。

  外部实体范例

<?php
$file = "xmltest.xml";

function trustedFile($file) {
   // only trust local files owned by ourselves
   if (!eregi("^([a-z]+)://", $file)
       && fileowner($file) == getmyuid()) {
           return true;
   }
   return false;
}

function startElement($parser, $name, $attribs) {
   print "&lt;<font color=/"#0000cc/">$name</font>";
   if (sizeof($attribs)) {
       while (list($k, $v) = each($attribs)) {
           print " <font color=/"#009900/">$k</font>=/"<font
                   color=/"#990000/">$v</font>/"";
       }
   }
   print "&gt;";
}

function endElement($parser, $name) {
   print "&lt;/<font color=/"#0000cc/">$name</font>&gt;";
}

function characterData($parser, $data) {
   print "<b>$data</b>";
}

function PIHandler($parser, $target, $data) {
   switch (strtolower($target)) {
       case "php":
           global $parser_file;
           // If the parsed document is "trusted", we say it is safe
           // to execute PHP code inside it.  If not, display the code
           // instead.
           if (trustedFile($parser_file[$parser])) {
               eval($data);
           } else {
               printf("Untrusted PHP code: <i>%s</i>",
                       htmlspecialchars($data));
           }
           break;
   }
}

function defaultHandler($parser, $data) {
   if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
       printf('<font color="#aa00aa">%s</font>',
               htmlspecialchars($data));
   } else {
       printf('<font size="-1">%s</font>',
               htmlspecialchars($data));
   }
}

function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,
                                 $publicId) {
   if ($systemId) {
       if (!list($parser, $fp) = new_xml_parser($systemId)) {
           printf("Could not open entity %s at %s/n", $openEntityNames,
                   $systemId);
           return false;
       }
       while ($data = fread($fp, 4096)) {
           if (!xml_parse($parser, $data, feof($fp))) {
               printf("XML error: %s at line %d while parsing entity %s/n",
                       xml_error_string(xml_get_error_code($parser)),
                       xml_get_current_line_number($parser), $openEntityNames);
               xml_parser_free($parser);
               return false;
           }
       }
       xml_parser_free($parser);
       return true;
   }
   return false;
}

function new_xml_parser($file) {
   global $parser_file;

   $xml_parser = xml_parser_create();
   xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
   xml_set_element_handler($xml_parser, "startElement", "endElement");
   xml_set_character_data_handler($xml_parser, "characterData");
   xml_set_processing_instruction_handler($xml_parser, "PIHandler");
   xml_set_default_handler($xml_parser, "defaultHandler");
   xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");
  
   if (!($fp = @fopen($file, "r"))) {
       return false;
   }
   if (!is_array($parser_file)) {
       settype($parser_file, "array");
   }
   $parser_file[$xml_parser] = $file;
   return array($xml_parser, $fp);
}

if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
   die("could not open XML input");
}

print "<pre>";
while ($data = fread($fp, 4096)) {
   if (!xml_parse($xml_parser, $data, feof($fp))) {
       die(sprintf("XML error: %s at line %d/n",
                   xml_error_string(xml_get_error_code($xml_parser)),
                   xml_get_current_line_number($xml_parser)));
   }
}
print "</pre>";
print "parse complete/n";
xml_parser_free($xml_parser);
?> 
 

  xmltest.xml

 

<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
 <TITLE>Title &plainEntity;</TITLE>
 <para>
  <informaltable>
   <tgroup cols="3">
    <tbody>
     <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row>
     <row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
 &systemEntity;
 <section id="about">
  <title>About this Document</title>
  <para>
   <!-- this is a comment -->
   <?php print 'Hi!  This is PHP version '.phpversion(); ?>
  </para>
 </section>
</chapter>

以下文档将被 xmltest.xml 文件调用: xmltest2.xml

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
   <element attrib="value"/>
   &testEnt;
   <?php print "This is some more PHP code being executed."; ?>
</foo>

kettle9.0+ 连接Hadoop报错 kettle bug 阅读详情

相关推荐

2022-04-06 RK3566 上调试百兆以太网卡YT8512C 调试记录

一、原理图 二、dts &gmac1_clkin{ clock-frequency = <50000000>; status = "okay"; }; &gmac1 { phy-mode = "rmii"; clock_in_out = "input"; snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; snps,reset-active-low; sn...

海月汐辰 1万+

php实现代码高亮,PHP高亮显示 XML 源代码_php

$file = "xmltest.xml";function trustedFile($file) {// only trust local files owned by ourselvesif (!eregi("^([a-z]+)://", $file)&& fileowner($file) == getmyuid()) {return true;http://www.gaoda...

weixin_34518190的博客 206

vins-mono前端详解(2)——imu预积分

本篇文章详细讲解了vins-mono中imu预积分内容,包括复杂的公式推导。

weixin_44587828的博客 1195

php网站代码报告,使用Checkstyle报告(来自CodeSniffer)可视化PHP代码

这真的是一个评论/问题,但SO认为它太长了所以我会把它作为一个答案:假设你想要输出这样的输出:$ phpcs --report=checkstyle /path/to/code并呈现原始源代码的一个版本,并以某种方式突出显示指定的部分,然后我认为你将“自己动手”。你必须编写一个脚本,它将代码库中源文件的路径作为输入参数(例如path / to / code)和一块“checkstyle”XML作为...

weixin_35367645的博客 183

Sigrity System SI Parallel Bus Analysis模式进行DDR3仿真分析操作指导-单个颗粒

Default Strobe Offset:DQS默认偏移时间,自动填充为0.5ns,即DQS默认偏移1/2UI,DQS滞后于DQ 1/2UI,让建立保持时间均分。WLO:写平衡偏移的数值,DataL是0ps,DataU是500ps,是根据WLOSkew自动定义的,可以认为是WLOSkew取整,也可以根据需要手动调整数值。注意AddCmd的UI=T,这里的Data Rate仍然是DQ的速率,并不是地址线的速率,地址线的速率=1/UI=1/2ns=0.5Gbps。

weixin_54787054的博客 366

48、住宅抵押贷款支持证券的定价、风险评估与结构化设计

本文深入探讨了住宅抵押贷款支持证券(RMBS)的定价、风险评估与结构化设计。内容涵盖提高定价准确性的方差缩减方法,如准蒙特卡罗序列的应用;分析RMBS面临的利率风险、信用风险和模型风险,并提出相应的度量与应对策略;介绍利用动态规划优化CMO分层结构以最大化发行利润的方法。同时总结了RMBS的基本类型、定价流程及市场发展趋势,为投资者和发行人提供全面的决策支持。

quiet的专栏 155

SyntaxHighlighter插件代码高亮显示使用方法

使用领域: 此插件会对做个人技术博客之类的开发者有用处哦~ 它可以在网页中对各种程序源代码语法进行加亮显示。支持当前流行的各种编程语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML 下载地址: http://www.dreamprojections.com/syntaxhi

兄弟连_战地日记 810

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1432

php使用html代码高亮,使用SyntaxHighlighter实现HTML高亮显示代码的方法

https://www.jb51.net/jiaoben/15599.htmlsyntaxhighlighter是一个小开源项目,它可以在网页中对各种程序源代码语法进行加亮显示。支持当前流行的各种编程语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML使用方法:1、假设网页文件test.ht...

weixin_39956022的博客 186

JAVA:Spring Boot3 集成 ShardingSphere 实现数据分库分表

本文介绍了基于Spring Boot和ShardingSphere-JDBC实现分库分表与读写分离的解决方案。针对高并发、大数据量场景下单库单表的性能瓶颈,通过配置ShardingSphere-JDBC实现:1)订单表按user_id和order_id分片到两个库和两张表;2)读写分离,写操作路由至主库,读操作在从库间负载均衡。方案使用Druid连接池优化,支持业务透明,无需修改SQL。

木头 661

C++11、C++14 和 C++17 标准新特性详解

特性C++11C++14C++17auto类型推导✅范围 for 循环✅Lambda 表达式✅✅✅智能指针✅移动语义✅nullptr✅统一初始化{}✅✅constexpr✅✅✅✅数字分隔符✅结构化绑定✅✅✅文件系统库✅。

h a 6 6 6 c k 为 你解决复杂难题! 441

CoolFormat源代码格式化工具

软件介绍:       CoolFormat源代码格式化是一款C\C++\C#\CSS\HTML\Java\JavaScript\JSON\PHP\SQL\XML代码格式化工具。软件可以快速多种风格格式化,并对语言进行着色。界面采用Office 2010风格,并有多种样式可以替换。并且支持代码高亮到网页上显示,方便博客文章之类的撰写阅读。 使用介绍:       1.全新Ribbon界面

无幻 9万+

SolidWorks速成教程P1——简介及基础操作

SolidWorks教程P1——简介及基础操作

嵌入式阿齐Archie 2万+

使用SyntaxHighlighter实现HTML高亮显示代码

syntaxhighlighter下载 syntaxhighlighter是一个小开源项目,它可以在网页中对各种程序源代码语法进行加亮显示。支持当前流行的各种编程语言: C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML 使用方法: 1、假设网页文件test.htm存放在一个目录,则将dp...

weixin_30566149的博客 123

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

php常用的函数总结

php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。 time_sleep_until() 函数延迟代码执行直到指定的时间。 time_nanosleep() 函数延迟代码执行若干秒和纳秒。 sleep() 函数延迟代码执行若干秒。 show_source() 函数对文件进行语法高亮显示。 strip_whitespace() 函数返回已删除 PHP 注释以及空白字符的源代码文件。 .

weixin_44944193的博客 9910

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

html 代码块显示 插件,代码区高亮显示插件-SNIPPET

插件描述:Snippet 是一款Jquery高亮插件,他提供了一个快速和简便的在html中高亮显示源代码的方式。Snippet 是一款Jquery高亮插件,他提供了一个快速和简便的在html中高亮显示源代码的方式。高亮语言支持原始支持15种流行语言C、C++、C#、CSS、Flex、HTML、Java、JavaScript、JavaScript with DOM、Perl、PHP、Python、R...

weixin_42300798的博客 2649

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

php编辑工具绿色,DSV PHP editor

DSV PHP editor是款非常专业的PHP编辑器,这软件的界面还是蛮简洁的,用户们可以通过编辑器查看php文件,整个软件的操作还是蛮便捷的,喜欢的用户们千万不要错过哦!软件介绍DSV PHP editor是一款功能全面且强劲的PHP编辑器,内置PHP语法模板,支持语法快速输入和语法检查,语法加亮显示功能,可实时运行PHP代码,内置了一个全面的PHP代码资料库,并具备强大的搜索和替换等编辑功能...

weixin_34508682的博客 306

php 赵亚飞_php常用判断的函数

下面是从网上找的一些常用函数,供大家参考学习:usleep() //延迟代码执行若干微秒。unpack() //从二进制字符串对数据进行解包。uniqid() //基于以微秒计的当前时间,生成一个唯一的 ID。time_sleep_until() //延迟代码执行直到指定的时间。time_nanosleep() ...

weixin_29617841的博客 151

2017php最新版本,2017PHP5函数大全

2017PHP5函数大全导语:很多PHP前辈都写了PHP大全,但是看了发现那些所谓的“大全”根本就不全,下面的是百分网小编为大家整理的PHP5函数大全。usleep() 函数延迟代码执行若干微秒。unpack() 函数从二进制字符串对数据进行解包。uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。time_sleep_until() 函数延迟代码执行直到指定的时间。time_na...

weixin_35021207的博客 133

php小,PHP5函数小全(分享)

很多PHP前辈都写了PHP大全,但是我看了发现那些所谓的“大全”根本就不全,甚至比我整理的这个列表内的函数还要少,竟然冠名“大全”,让我不愤,背道而驰,整个“小犬”。usleep() 函数延迟代码执行若干微秒。unpack() 函数从二进制字符串对数据进行解包。uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。time_sleep_until() 函数延迟代码执行直到指定的时间。...

weixin_28909601的博客 150

源代码 格式化 php,CoolFormat源代码格式化工具

CoolFormat软件介绍:CoolFormat源代码格式化是一款C\ C++\ C#\ CSS\ HTML\ Java\ JavaScript\ JSON\ Objective-C\ PHP\ SQL\ XML代码格式化工具。软件可以快速多种风格格式化,并对语言进行着色。界面采用Office 2010风格,并有多种样式可以替换。并且支持代码高亮到网页上显示,方便博客文章之类的撰写阅读。使用介绍...

weixin_28728495的博客 318

php开发工具及技术,PHP开发技术常用的开发工具有哪些

如今的PHP开发工程师正在不断的增加,因为如今市场上对PHP开发工程师的需求一直是供不应求的情况,因此才会有人不断的参加PHP培训学习。想要成为专业的PHP开发工程师就需要掌握PHP常用的开发工具,但是常用的开发工具有哪些呢?本篇文章小编就带大家看一下扣丁学堂PHP培训之五种常用的PHP工具。PHP培训一、EditPlusEditPlus功能强大,可以代替记事本的文字编辑器,拥有无限的Undo/R...

weixin_35669712的博客 334

php免费编辑工具,10个免费的PHP编辑器/开发工具_PHP教程

转自: http://www.iteye.com/news/22672Notepad ++1. Notepad内置支持多达 27 种语法高亮度显示(囊括各种常见的源代码、脚本,值得一提的是,完美支持.nfo 文件查看),也支持自定义语言;2. Notepad可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,代码显示得非常有层次感!这是此软件最具特色的体现之一;3. Notepad可打开...

weixin_36205186的博客 540

cgi实现php,php CGI 简单了解

apache 中添加php CGIAddType application/x-httpd-php .php .phtml 可以将任何后缀的文件解析为 PHP,只要在以下语句中加入并用空格分开。这里添加一个 .phtml 来示例。AddType application/x-httpd-php-source .phps 为了将 .phps 作为 PHP 的源文件进行语法高亮显示,还可...

weixin_35816805的博客 267

php常用系统函数库,PHP常用函数大全

phpusleep() 函数延迟代码执行若干微秒。unpack() 函数从二进制字符串对数据进行解包。uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。time_sleep_until() 函数延迟代码执行直到指定的时间。time_nanosleep() 函数延迟代码执行若干秒和纳秒。sleep() 函数延迟代码执行若干秒。show_source() 函数对文件进行语法高亮显示。...

weixin_42221522的博客 481

html如何显示代码实现方法,使用SyntaxHighlighter实现HTML高亮显示代码的方法

https://www.jb51.net/jiaoben/15599.htmlsyntaxhighlighter是一个小开源项目,它可以在网页中对各种程序源代码语法进行加亮显示。支持当前流行的各种编程语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML使用方法:1、假设网页文件test.ht...

weixin_42512159的博客 568
上一篇: 提高PHP程序运行效率的四个小方法
下一篇: 理解PHP中的MVC编程之MVC框架简介
mzphp
博客等级 码龄21年 9粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值