jbzoo/markdown

Tools to render markdown text from PHP code

Maintainers

👁 smetdenis

Package info

github.com/JBZoo/Markdown

pkg:composer/jbzoo/markdown

Statistics

Installs: 1 077 252

Dependents: 5

Suggesters: 0

Stars: 2

Open Issues: 0

7.0.2 2025-09-27 21:48 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT fe5fd5145b44cd0bad7aa721c83b3fddd79b7fb7

  • Denis Smetannikov <admin.woop@jbzoo.com>

textmarkdownRenderingreadmejbzoo

This package is auto-updated.

Last update: 2026-06-27 23:27:20 UTC


README

👁 CI
👁 Coverage Status
👁 Psalm Coverage
👁 Psalm Level
👁 CodeFactor
👁 Stable Version
👁 Total Downloads
👁 Dependents
👁 GitHub License

Tools to render markdown text from PHP code. This library provides a simple and fluent API for generating markdown elements programmatically, including tables with advanced formatting options.

Features

  • Markdown Elements: Generate links, titles, images, badges, blockquotes, spoilers, and code blocks
  • Advanced Tables: Create markdown tables with auto-indexing, custom alignments, and flexible rendering
  • Type Safety: Full PHP 8.2+ compatibility with strict typing
  • Fluent API: Chainable methods for intuitive table building
  • Zero Dependencies: Lightweight with minimal external requirements

Requirements

  • PHP 8.2 or higher
  • Composer

Installing

composer require jbzoo/markdown

Usage

Table Generation

<?php declare(strict_types=1);

use JBZoo\Markdown\Table;

echo (new Table())
 ->addAutoIndex('Index', 999)
 ->setHeaders(['Header #1', 'Header #2'])
 ->setAlignments([Table::ALIGN_CENTER, Table::ALIGN_RIGHT])
 ->appendRow(['123', '456'])
 ->appendRows([
 ['789_1', '9871'],
 ['789_2', '']
 ])
 ->render();

Result

| Index | Header #1 | Header #2 |
|------:|:---------:|----------:|
| 999 | 123 | 456 |
| 1000 | 789_1 | 9871 |
| 1001 | 789_2 | |

Markdown Elements

<?php declare(strict_types=1);

use JBZoo\Markdown\Markdown;

// Page Navigation
echo Markdown::title('Page Name', 1); // # Page Name\n
echo Markdown::title('Title', 2); // ## Title\n
echo Markdown::title('Sub Title', 3); // ### Sub Title\n

// Links
echo Markdown::url('Google', 'https://google.com');
// Output: [Google](https://google.com)

// Badges
echo Markdown::badge('Status', 'https://travis-ci.org/badge.svg', 'https://travis-ci.org/');
// Output: [![Status](https://travis-ci.org/badge.svg)](https://travis-ci.org/)

// Images
echo Markdown::image('https://example.com/logo.jpg', 'Logo');
// Output: ![Logo](https://example.com/logo.jpg)

// Blockquotes
echo Markdown::blockquote(['Quote Line 1', 'Quote Line 2', 'Quote Line 3']);
// Output:
// > Quote Line 1
// > Quote Line 2
// > Quote Line 3

// Spoiler (collapsible content)
echo Markdown::spoiler('Click to expand', 'Hidden content here');
// Output:
// <details>
// <summary>Click to expand</summary>
//
// Hidden content here
//
// </details>

// Code blocks
echo Markdown::code("<?php\necho 'Hello World';\n", 'php');
// Output:
// ```php
// <?php
// echo 'Hello World';
//
// ```

Table Features

The Table class supports various advanced features:

<?php declare(strict_types=1);

use JBZoo\Markdown\Table;

// Basic table
$table = new Table();
$table->setHeaders(['Name', 'Age', 'City'])
 ->appendRow(['John', '25', 'New York'])
 ->appendRow(['Jane', '30', 'London']);

echo $table->render();

// Table with alignments
$table = new Table();
$table->setHeaders(['Left', 'Center', 'Right'])
 ->setAlignments([Table::ALIGN_LEFT, Table::ALIGN_CENTER, Table::ALIGN_RIGHT])
 ->appendRow(['Text', 'Text', 'Text']);

echo $table->render();

// Table with auto-indexing
$table = new Table();
$table->addAutoIndex('#', 1)
 ->setHeaders(['Item', 'Price'])
 ->appendRows([
 ['Apple', '$1.00'],
 ['Banana', '$0.50'],
 ['Orange', '$0.75']
 ]);

echo $table->render();

Development

Setup

make update # Install/update dependencies

Testing

make test # Run PHPUnit tests
make test-all # Run all tests and code quality checks
make codestyle # Run linters and code style checks

Available Make Targets

Run make help to see all available commands including:

  • Code quality tools (PHPStan, Psalm, PHPCS, etc.)
  • Performance testing
  • Report generation
  • Build tools

License

MIT