백엔드 개발 PHP 튜토리얼 PHP高亮显示 XML 源代码_PHP

PHP高亮显示 XML 源代码_PHP

Jun 01, 2016 pm 12:29 PM
gt lt 보여주다 소스 코드

  它将说明如何外部实体指向处理器来包含和解析其它文档,如何处理 PIs,以及一种确定包含有 PIs 的代码的可信度。

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

  外部实体范例

$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 "<$name";
if (sizeof($attribs)) {
while (list($k, $v) = each($attribs)) {
print " $k=\" color=\"#990000\">$v\"";
}
}
print ">";
}

function endElement($parser, $name) {
print "$name>";
}

function characterData($parser, $data) {
print "$data";
}

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: %s",
htmlspecialchars($data));
}
break;
}
}

function defaultHandler($parser, $data) {
if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
printf('%s',
htmlspecialchars($data));
} else {
printf('%s',
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 "

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

  xmltest.xml





]>

Title &plainEntity;




a1b1c1
a2c2
a3b3c3




&systemEntity;


About this Document





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




]>


&testEnt;

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Windows 11 검색에서 뉴스 및 인기 콘텐츠를 제거하는 방법 Oct 16, 2023 pm 08:13 PM

Windows 11에서 검색 필드를 클릭하면 검색 인터페이스가 자동으로 확장됩니다. 왼쪽에는 최근 프로그램 목록이 표시되고 오른쪽에는 웹 콘텐츠가 표시됩니다. Microsoft는 여기에 뉴스와 인기 콘텐츠를 표시합니다. 오늘의 확인에서는 Bing의 새로운 DALL-E3 이미지 생성 기능, "Bing과 함께 드래곤 채팅" 제안, 드래곤에 대한 추가 정보, 웹 섹션의 주요 뉴스, 게임 추천 및 인기 검색 섹션을 홍보합니다. 전체 항목 목록은 컴퓨터에서의 활동과 별개입니다. 일부 사용자는 뉴스를 볼 수 있는 기능을 높이 평가할 수도 있지만 이 모든 것은 다른 곳에서도 풍부하게 제공됩니다. 다른 사람들은 이를 직간접적으로 판촉이나 광고로 분류할 수도 있습니다. Microsoft는 자체 콘텐츠를 홍보하기 위해 인터페이스를 사용합니다.

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? 화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? Dec 29, 2023 pm 02:27 PM

많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

iOS 17의 대기 모드는 충전 중인 iPhone을 홈 허브로 바꿔줍니다. iOS 17의 대기 모드는 충전 중인 iPhone을 홈 허브로 바꿔줍니다. Jun 06, 2023 am 08:20 AM

iOS 17에서 Apple은 iPhone을 가로 방향으로 충전하도록 설계된 새로운 디스플레이 환경인 대기 모드를 선보입니다. 이 위치에서 iPhone은 일련의 전체 화면 위젯을 표시하여 유용한 홈 허브로 전환할 수 있습니다. 대기 모드는 iOS 17을 실행하는 iPhone을 충전기에 수평으로 올려놓으면 자동으로 활성화됩니다. 시간, 날씨, 달력, 음악 컨트롤, 사진 등을 볼 수 있습니다. 사용 가능한 대기 옵션을 왼쪽이나 오른쪽으로 스와이프한 다음 길게 누르거나 위/아래로 스와이프하여 사용자 정의할 수 있습니다. 예를 들어 아날로그 보기, 디지털 보기, 버블폰트, 일광 보기 중에서 선택할 수 있는데, 시간이 지남에 따라 배경색이 변합니다. 몇 가지 옵션이 있습니다.

Linux에서 컬 버전을 업데이트하는 방법에 대한 튜토리얼입니다! Linux에서 컬 버전을 업데이트하는 방법에 대한 튜토리얼입니다! Mar 07, 2024 am 08:30 AM

Linux에서 컬 버전을 업데이트하려면 다음 단계를 따르세요. 현재 컬 버전을 확인하세요. 먼저 현재 시스템에 설치된 컬 버전을 확인해야 합니다. 터미널을 열고 다음 명령을 실행합니다. 컬 --version 이 명령은 현재 컬 버전 정보를 표시합니다. 사용 가능한 컬 버전 확인: 컬을 업데이트하기 전에 사용 가능한 최신 버전을 확인해야 합니다. 최신 버전의 컬을 찾으려면 컬의 공식 웹사이트(curl.haxx.se)나 관련 소프트웨어 소스를 방문하세요. 컬 소스 코드 다운로드: 컬 또는 브라우저를 사용하여 선택한 컬 버전의 소스 코드 파일(일반적으로 .tar.gz 또는 .tar.bz2)을 다운로드합니다.

Windows 11 사용자 가이드: 광고 팝업을 비활성화하는 방법 Windows 11 사용자 가이드: 광고 팝업을 비활성화하는 방법 Sep 22, 2023 pm 07:21 PM

Microsoft의 Windows 11 운영 체제는 알림 시스템을 사용하여 주기적으로 제안 사항을 컴퓨터에 팝업으로 표시할 수 있습니다. 원래 사용자에게 Windows 11 워크플로 개선을 위한 팁과 제안을 제공하기 위해 설계된 제안 시스템은 Microsoft 서비스 및 제품을 홍보하기 위한 광고 시스템으로 거의 완전히 변형되었습니다. 제안 팝업은 사용자에게 Microsoft 365 구독을 광고하거나 Android 휴대폰을 장치에 연결하도록 제안하거나 백업 솔루션을 설정할 수 있습니다. 이러한 팝업이 귀찮다면 시스템을 조정하여 팝업을 완전히 비활성화할 수 있습니다. 다음 가이드에서는 Microsoft의 Windows 11 운영 체제를 실행하는 장치에서 팝업을 비활성화하는 방법에 대한 권장 사항을 제공합니다.

수정: Windows 11에서 캡처 도구가 작동하지 않음 수정: Windows 11에서 캡처 도구가 작동하지 않음 Aug 24, 2023 am 09:48 AM

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

데스크탑 레이아웃이 잠기는 이유와 해결 방법 데스크탑 레이아웃이 잠기는 이유와 해결 방법 Feb 19, 2024 pm 06:08 PM

데스크탑 레이아웃이 잠겨 있으면 어떻게 됩니까? 컴퓨터를 사용할 때 데스크탑 레이아웃이 잠기는 상황이 발생할 수 있습니다. 이 문제는 데스크탑 아이콘의 위치를 ​​자유롭게 조정하거나 데스크탑 배경을 변경할 수 없음을 의미합니다. 그렇다면 데스크탑 레이아웃이 잠겨 있다는 메시지가 나타나면 정확히 무슨 일이 일어나고 있는 걸까요? 1. 데스크탑 레이아웃 및 잠금 기능 이해 먼저 데스크탑 레이아웃과 데스크탑 잠금의 두 가지 개념을 이해해야 합니다. 데스크탑 레이아웃이란 바로가기, 폴더, 위젯 등 데스크탑의 다양한 요소를 배열하는 것을 말합니다. 우리는 자유로울 수 있어

원격 데스크톱 연결을 통해 상대방의 작업 표시줄을 표시하는 방법 원격 데스크톱 연결을 통해 상대방의 작업 표시줄을 표시하는 방법 Jan 03, 2024 pm 12:49 PM

원격 데스크톱 연결을 사용하는 사용자가 많습니다. 사용 시 상대방의 작업 표시줄이 표시되지 않는 등 몇 가지 사소한 문제가 발생합니다. 실제로는 상대방의 설정 문제일 가능성이 높습니다. 솔루션. 원격 데스크톱 연결 중에 상대방의 작업 표시줄을 표시하는 방법: 1. 먼저 "설정"을 클릭합니다. 2. 그런 다음 "개인 설정"을 엽니다. 3. 그런 다음 왼쪽에서 "작업 표시줄"을 선택합니다. 4. 그림에서 작업 표시줄 숨기기 옵션을 끕니다.

See all articles