PHP YAML 파서 [닫힘]


105

PHP 용 좋은 YAML 파서를 아는 사람이 있습니까? 그렇다면이 라이브러리의 장단점은 무엇입니까?



16
+1 비 건설 있지만,이 페이지는 나에게 매우 도움이되었다
에릭 로버트슨

2
이 질문에 대해 가장 많이 득표 한 답변의 품질을 고려할 때이 질문이 "건설적이지 않음"으로 종결 된 것은 놀랍습니다.
dreftymac

방금 Yaml의 더 간단한 사촌 인 BabyYaml의 파서를 릴리스했습니다. 관심이 있으시면
ling

나는 ErickRobertson과 dreftymac에 동의해야합니다. 이것은 말 그대로 내 질문에 잘 대답했고, 그것을 닫으면 더 이상 가능한 좋은 대답을 막았습니다.
Pharaoh Tools

답변:


139

최종 업데이트 : 2017 년 7 월 26 일

다음은 PHP에서 YAML 상태를 요약 한 것입니다.

  • C 라이브러리에 대한 래퍼 : 빠른 속도가 필요한 경우 다음을 원할 것입니다.
  • 순수 PHP 구현 :

    • sfYaml : Symfony의 YAML 구성 요소. 여기에서 저자의 동기를 확인할 수 있습니다 . 그는 " 사용하기 쉽고 빠르며 단위 테스트를 거쳐 명확한 오류 메시지 가있는"무언가를 원했습니다 .
    • spyc : 종속성이없는 YAML 파서

이 글을 쓰는 시점에서 앞서 언급 한 라이브러리와 이들이 지원 하는 YAML 사양 (1.2는 최신 버전) 의 최신 버전 출시 날짜는 다음과 같습니다.

php-yaml   1.3.0     2016-09-24     YAML 1.1  [PHP 5]
php-yaml   2.0.0     2016-09-24     YAML 1.1  [PHP 7]
syck       0.9.3     2008-11-18     YAML 1.0
sfYaml     3.3.5     2017-06-15     YAML 1.1, most of 1.2
spyc       0.6.2     2017-02-24     YAML 1.1 

1
이 (같은 다른 덜 알려진 라이브러리입니다 이 하나 호드 프로젝트는,), 그러나 나는이에 많이 탐구하고 싶지 않았다.
NullUserException

3
저는 약 2 년 동안 sfYaml을 사용해 왔으며 성능 테스트에서 sfYaml :: parse ()가 처리 시간의 대부분을 차지한다는 것을 깨달았습니다. php-yaml로 교체했고 이제 애플리케이션이 70 % 빨라졌습니다! 그것은 엄청난 차이입니다.
Attila Fulop 2013

1
PHP 용 2019 업데이트 : "spyc"에는 많은 문제가 있지만 "sfYaml"은 잘 작동합니다.
ViliusL

49

Spyc : https://github.com/mustangostang/spyc

순수 PHP 구현이므로 설치를 위해 서버를 수정할 필요가 없습니다. 속도가 심각한 문제라면 이상적인 솔루션이 아닐 수도 있지만 YAML을 구성에 사용하거나 비교적 적은 양으로 사용하는 경우 환상적인 솔루션입니다.

YAML 문서가 주어지면 Spyc은 적합하다고 판단되는대로 사용할 수있는 배열을 반환합니다.

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

배열이 주어지면 Spyc은 데이터에서 빌드 된 YAML 문서가 포함 된 문자열을 반환합니다.

$yaml_str = Spyc::YAMLDump($myarray);

1
+1 가져 오기 스크립트에서 YAML을 사용하는 빠르고 쉬운 방법을 원했습니다. 내 응용 프로그램은 가져 오기 이외의 지원이 필요하지 않습니다 (그리고 언젠가는 내보내기). "아직 다른 YAML 파서"로 나열된 spyc가 원 클릭 솔루션이라는 것을 알았습니다. 하나의 스크립트를 내 스크립트 폴더에 놓고 포함시키고 하나의 메소드를 호출했습니다. 그보다 더 쉬워지지는 않습니다. 이제 다시 일하러 가겠습니다.로드 블록이 제거되었습니다.
Erick Robertson

1
오래되고 많은 yaml 파일을 잘못 구문 분석합니다 (일부 데이터가 손실 됨).
ViliusL



3

프로젝트에서 YAML을 많이 사용하는 경우 spyc 또는 Symfony YAML과 같은 순수 PHP 라이브러리가 충분히 빠르지 않을 수 있습니다. C YAML 파서에 대해 최소한 두 개의 PHP 바인딩이 있습니다.

  • yaml -LibYAML YAML 1.1 파서 라이브러리 용 래퍼
  • syck -Syck YAML 1.0 파서 라이브러리 용 래퍼


2

sfYaml 시도해보십시오 . 내가 아는 것이 최고입니다.

Symfony와 Doctrine ORM이 이것을 사용하고 있습니다.

그것을 얻으려면 Doctrine 1.2를 다운로드sfYaml 하고 vendor디렉토리 에서 추출하십시오 .

귀하의 필요에 맞는지 알려주십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.