찾다
백엔드 개발PHP 튜토리얼PHP가 xmllint 명령을 사용하여 xml 및 html_php 팁을 처리하는 방법

이 기사의 예에서는 PHP가 xmllint 명령을 사용하여 xml 및 html을 처리하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

xmllint는 xml 처리 및 확인, html 처리에 매우 편리한 도구입니다. Linux에서는 libxml2가 설치되어 있으면 이 명령을 사용할 수 있습니다. 먼저 --html 및 --xpath 매개변수를 사용하여 HTML을 처리하는 예를 살펴보겠습니다.

예는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
curl http://www.jb51.net /ip/?q =8.8.8.8 2>/dev/null | xmllint --xpath "//ul[@id='csstb']" - 2>/dev/null 's///g'

위의 예에서는 123cha에 대한 IP 주소의 소유권을 질의한 후 결과(ul#csstb)를 추출하여 텍스트 부분의 내용만을 구하고 있습니다. 위 스크립트 문장을 실행한 결과는 다음과 같습니다.

[문의]:8.8.8.8
이 사이트의 주요 데이터:
미국> 이 사이트의 보조 데이터: Google Public DNS 제공:hypo
미국 Google의 무료 Google Public DNS는 다음을 제공합니다. zwstar 참조 데이터 1: 미국
참고자료 2: 미국

다른 주요 매개변수의 사용법을 예시와 함께 살펴보겠습니다.


1. --형식
이 매개변수는 가독성이 좋도록 xml 형식을 지정하는 데 사용됩니다.
다음 내용을 포함하는 xml(person.xml)이 있다고 가정합니다.

코드 복사 코드는 다음과 같습니다.
ball30나이남성성별>사람>
다음 작업을 수행하면 더 읽기 쉬운 xml 형식으로 출력됩니다.

코드 복사 코드는 다음과 같습니다.
#xmllint --format person.xml



30
남성성별>
사람>

2. --노블랭크
--format과 반대로 전송량을 절약하기 위해 xml에서 공백을 제거하려는 경우가 있습니다. 이 경우 --noblanks 명령을 사용할 수 있습니다.
xml(person.xml)의 내용은 다음과 같다고 가정합니다

코드 복사 코드는 다음과 같습니다.


30
남성성별>
사람>
이 매개변수 작업을 실행한 후의 출력 결과는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
#xmllint --noblanks person.xml


3. --스키마

스킴을 사용하여 xml 파일의 정확성을 확인하세요(XML 스키마는 XML 기반 DTD 대체품입니다) xml 파일(person.xml)과 schem 파일(person.xsd)이 있다고 가정하면 내용은 다음과 같습니다
person.xml



30
남성성별>
사람>

사람.xsd


코드 복사 코드는 다음과 같습니다.

   
     
     
     
       
         
           
           
         
제한사항>
       
단순 유형>
      요소>
     
       
         
           
           
           
         
모두>
       
복합 유형>
     
요소>
    스키마>

按如下命令执行后的结果是:

复主代码 代码如下:
#xmllint --schema person.xsd person.xml

   
      공
      30
      남성성별>
    사람>

person.xml의 유효성을 검사합니다.
참고: 默认情况下,验证后会输ude验证的文件内容,可以使用 --noout选项去掉此输流,这样我们可以只得到最厎的验证结果。

复제대码 代码如下:
#xmllint --noout --schema person.xsd person.xml

person.xml이 유효성을 검사합니다.
하단에는 我们改动person.xml,使这份文件age字段和sextour是不符份动义的。
复代码 代码如下:
#xmllint --noout --schema person.xsd person.xml
person.xml:4: 요소 연령: 스키마 유효성 오류: 'age' 요소: 'not age'는 원자 유형 'xs:integer'의 유효한 값이 아닙니다.
person.xml:5: 요소 섹스: 스키마 유효성 오류: 'sex' 요소: ['enumeration' 패싯] 'test' 값은 {'male', 'female'} 집합의 요소가 아닙니다.
person.xml:5: 요소 섹스: 스키마 유효성 오류: 'sex' 요소: 'test'는 로컬 원자 유형의 유효한 값이 아닙니다.
person.xml 유효성 검사 실패

可以看到xmllint成功的报出了错误!

4、 关于--스키마적 표현

이전에 先看下side에서는 php执行xmllint然后拿到返回结果,你代码通常应该是这个样子valid.php를 사용하여

复제대码 代码如下:
$command = "xmllint --noout --schema person.xsd person.xml";
exec($command, $output, $retval);
//출출错时返回值不为0
if ($retval != 0){
    var_dump($output);
}
그렇지 않으면{
    echo "그렇습니다!";
}

위의 person.xml에 오류를 유지합니다.

이 코드를 실행하면 결과가 오류가 아니라 array(0) {}라는 것을 알 수 있습니다. 놀랍습니다!
왜 이런 일이 발생합니까?

xmllint --schema 때문에 검증 중 오류가 발생하면 오류 메시지가 표준 출력(stdout)이 아닌 표준 오류(stderr)를 통해 표시됩니다.

exec의 출력 매개변수는 표준 출력(stdout)에 표시된 내용만 가져올 수 있습니다.
따라서 오류 메시지를 얻으려면 표준 오류를 표준 출력으로 리디렉션하고 이에 따라 코드를 수정해야 합니다.

코드 복사 코드는 다음과 같습니다.
$command = "xmllint --noout --schema person.xsd person .xml 2> ;$1";

valid.php를 다시 실행하면 오류 메시지가 성공적으로 나타납니다!

예는 다음과 같습니다.
먼저 다음 내용을 포함하는 po.xml이라는 xml 문서를 만듭니다.

코드 복사 코드는 다음과 같습니다.



> & Lt; 123 메이플 스트리트 & LT;/스트리트 & GT; > > > 배송지>

                                                                                  > > > > >

서둘러요, 잔디밭이 거칠어지고 있어요!

         
~ >                                         1수량>
~ > >          항목>
         
                                       베이비 모니터
                                        1수량>
                                             39.98
                 1999-05-21
         항목>
항목>
구매주문>

그러면 po.xml용으로 작성된 스키마 파일의 이름은 po.xsd이고 내용은 다음과 같습니다.




코드 복사


코드는 다음과 같습니다.

 
 
   example.com의 구매 주문 스키마.
   저작권 2000Example.com. 모든 권리 보유.
 
문서>
 주석>
 
 
 
 
  
  
  
  
 
순서>
 
 복합 유형>
 
 
  
  
  
  
  
 
순서>
  www.jb51.net
 복합 유형>
 
 
  
   
    
     
     
      
       
        
       
제한사항>
      
단순 유형>
     
요소>
     
     
     
    
순서>
    
    복합 유형>
   요소>
  순서>
 복합 유형>
 
 
 
  
  제한사항>
 단순 유형>
스키마>

使用 xmllint 对 po.xml 文件进行校验:
复代码 代码如下:
$ xmllint   -schema po.xsd po.xml
如果无出错信息,就说明校验通过了。

希望本文所述对大家的PHP程序设计有所帮助。

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

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP 및 Python : 유사점과 차이점을 탐구합니다PHP 및 Python : 유사점과 차이점을 탐구합니다Apr 19, 2025 am 12:21 AM

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP와 Python : 다른 패러다임이 설명되었습니다PHP와 Python : 다른 패러다임이 설명되었습니다Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python : 그들의 역사에 깊은 다이빙PHP와 Python : 그들의 역사에 깊은 다이빙Apr 18, 2025 am 12:25 AM

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP와 Python 중에서 선택 : 가이드PHP와 Python 중에서 선택 : 가이드Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP 및 프레임 워크 : 언어 현대화PHP 및 프레임 워크 : 언어 현대화Apr 18, 2025 am 12:14 AM

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

PHP의 영향 : 웹 개발 및 그 이상PHP의 영향 : 웹 개발 및 그 이상Apr 18, 2025 am 12:10 AM

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

See all articles

핫 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

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

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경