ramsey/pygments

A PHP wrapper for Pygments, the Python syntax highlighter, forked from kzykhys/pygments.

3.0.0 2025-03-07 22:59 UTC

README

A PHP wrapper for Pygments, the Python syntax highlighter.

Source Code Download Package PHP Programming Language Read License Build Status Codecov Code Coverage

About

ramsey/pygments is a PHP wrapper for Pygments, the Python syntax highlighter, forked from the Pygments.php project.

This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.

Installation

Install this package as a dependency using Composer.

composer require ramsey/pygments

Requirements

  • PHP 8.2 or greater
  • Python
  • Pygments (pip install Pygments)

Python and Pygments versions tested:

Pygments: 2.17 2.18 2.19
Python 3.11
Python 3.12
Python 3.13

Note

ramsey/pygments will likely work on other versions of Python and Pygments, but the versions tested against are limited to keep the GitHub Actions job matrix at a reasonable size. If you encounter a version of Python or Pygments that does not work, please open an issue.

Usage

Highlight source code

use Ramsey\Pygments\Pygments;

$pygments = new Pygments();
$html = $pygments->highlight(file_get_contents('index.php'), 'php', 'html');
$console = $pygments->highlight('package main', 'go', 'ansi');

Generate CSS

use Ramsey\Pygments\Pygments;

$pygments = new Pygments();
$css = $pygments->getCss('monokai');
$prefixedCss = $pygments->getCss('default', '.syntax');

Guess lexer name

use Ramsey\Pygments\Pygments;

$pygments = new Pygments();
$lexer = $pygments->guessLexer('foo.rb'); // ruby

Get a list of lexers/formatters/styles

use Ramsey\Pygments\Pygments;

$pygments = new Pygments();
$lexers = $pygments->getLexers()
$formatters = $pygments->getFormatters();
$styles = $pygments->getStyles();

Set a custom pygmentize path

use Ramsey\Pygments\Pygments;

$pygments = new Pygments('/path/to/pygmentize');

Contributing

Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.

Coordinated Disclosure

Keeping user information safe and secure is a top priority, and we welcome the contribution of external security researchers. If you believe you've found a security issue in software that is maintained in this repository, please read SECURITY.md for instructions on submitting a vulnerability report.

Copyright and License

The ramsey/pygments library is copyright © Ben Ramsey and licensed for use under the terms of the MIT License (MIT).

ramsey/pygments is a fork of Pygments.php. The Pygments.php library is copyright © Kazuyuki Hayashi and licensed for use under the terms of the MIT License (MIT).

Please see LICENSE for more information.