ramsey/pygments
A PHP wrapper for Pygments, the Python syntax highlighter.
, (*1)
, (*2)
About
ramsey/pygments is a PHP wrapper for Pygments, the
Python syntax highlighter, forked from the
Pygments.php project., (*3)
This project adheres to a code of conduct.
By participating in this project and its community, you are expected to
uphold this code., (*4)
Installation
Install this package as a dependency using Composer., (*5)
``` bash
composer require ramsey/pygments, (*6)
### 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](https://github.com/ramsey/pygments/issues).
## Usage
### Highlight source code
``` php
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
``` php
use Ramsey\Pygments\Pygments;, (*7)
$pygments = new Pygments();
$css = $pygments->getCss('monokai');
$prefixedCss = $pygments->getCss('default', '.syntax');, (*8)
### Guess lexer name
``` php
use Ramsey\Pygments\Pygments;
$pygments = new Pygments();
$lexer = $pygments->guessLexer('foo.rb'); // ruby
``` php
use Ramsey\Pygments\Pygments;, (*9)
$pygments = new Pygments();
$lexers = $pygments->getLexers()
$formatters = $pygments->getFormatters();
$styles = $pygments->getStyles();, (*10)
### Set a custom `pygmentize` path
``` php
use Ramsey\Pygments\Pygments;
$pygments = new Pygments('/path/to/pygmentize');
Contributing
Contributions are welcome! To contribute, please familiarize yourself with
CONTRIBUTING.md., (*11)
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., (*12)
Copyright and License
The ramsey/pygments library is copyright © Ben Ramsey
and licensed for use under the terms of the MIT License (MIT)., (*13)
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)., (*14)
Please see LICENSE for more information., (*15)