PHP의 더 나은 마크다운 파서 — 데모
작곡가 패키지를 설치합니다:
composer require erusev/parsedown
또는 최신 릴리스를 다운로드하고 Parsedown.php
포함하십시오.
$ Parsedown = new Parsedown ();
echo $ Parsedown -> text ( ' Hello _Parsedown_! ' ); # prints : < p > Hello < em > Parsedown </ em >!</ p >
인라인 마크다운만 구문 분석할 수도 있습니다.
echo $ Parsedown -> line ( ' Hello _Parsedown_! ' ); # prints : Hello < em > Parsedown </ em >!
위키와 이 비디오 튜토리얼에 더 많은 예제가 있습니다.
Parsedown은 생성된 HTML 내에서 사용자 입력을 이스케이프 처리할 수 있습니다. 또한 Parsedown은 마크다운 구문 자체에 의해 도입된 추가 스크립팅 벡터(예: 스크립팅 링크 대상)에 삭제를 적용합니다.
Parsedown에게 신뢰할 수 없는 사용자 입력을 처리하고 있음을 알리려면 다음을 사용하십시오.
$ Parsedown -> setSafeMode ( true );
대신 신뢰할 수 없는 사용자 입력 내에서 HTML을 허용하고 싶지만 XSS에서 벗어나는 출력을 원한다면 HTML Purifier와 같이 HTML 태그를 화이트리스트에 추가할 수 있는 HTML 삭제 도구를 사용하는 것이 좋습니다.
두 경우 모두 공격자가 첫 번째 취약점 중 하나에서 취약점을 발견하더라도 페이지가 안전할 수 있도록 콘텐츠 보안 정책(브라우저 보안 기능) 배포와 같은 심층 방어 조치를 취하는 것을 강력히 고려해야 합니다. 위의 방어선.
Parsedown에 대한 확장을 사용할 때 안전 모드가 반드시 안전한 결과를 산출하는 것은 아닙니다. 확장은 XSS에 대한 특정 안전성을 결정하기 위해 자체적으로 평가되어야 합니다.
경고: 이 방법은 XSS로부터 안전하지 않습니다!
신뢰할 수 있는 입력에서 HTML을 이스케이프하려면 다음을 사용할 수 있습니다.
$ Parsedown -> setMarkupEscaped ( true );
이 경우에도 사용자는 안전하지 않은 스크립팅 벡터(예: [xss](javascript:alert%281%29)
삽입할 수 있습니다.
파싱다운은 어떻게 작동하나요?
인간처럼 Markdown을 읽으려고 시도합니다. 먼저 라인을 살펴봅니다. 라인이 어떻게 시작되는지에 관심이 있습니다. 이는 블록을 인식하는 데 도움이 됩니다. 예를 들어, 행이 -
로 시작하면 아마도 목록에 속한다는 것을 알고 있습니다. 블록을 인식하면 콘텐츠를 계속해서 인식합니다. 읽으면서 특수 문자를 주의합니다. 이는 인라인 요소(또는 인라인)를 인식하는 데 도움이 됩니다.
우리는 이 접근 방식을 "라인 기반"이라고 부릅니다. 우리는 Parsedown이 이를 사용한 최초의 Markdown 파서라고 믿습니다. Parsedown이 출시된 이후 다른 개발자들은 동일한 접근 방식을 사용하여 PHP 및 다른 언어로 다른 Markdown 파서를 개발했습니다.
CommonMark와 호환됩니까?
대부분의 CommonMark 테스트를 통과했습니다. 통과하지 못한 대부분의 테스트는 매우 드문 경우를 다룹니다. 하지만 CommonMark가 성숙해짐에 따라 규정 준수도 개선되어야 합니다.
누가 그것을 사용합니까?
Laravel Framework, Bolt CMS, Grav CMS, Herbie CMS, Kirby CMS, October CMS, Pico CMS, Statamic CMS, phpDocumentor, RaspberryPi.org, Symfony Demo 등.
어떻게 도와드릴까요?
그것을 사용하고, 별표를 표시하고, 공유하고, 관대하다고 생각되면 기부하세요.
또 무엇을 알아야 합니까?
또한 로컬 마크다운 파일용으로 설계된 메모 앱인 Nota도 만듭니다.