PHP

Markdown to Plain Text

admin by @admin ADMIN
Jun 18, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Strip common Markdown syntax to produce a plaintext preview suitable for excerpts, search indexes, or email subjects. Handles headings, bold/italic, links, images, code blocks, and lists.
PHP
Raw
<?php
function markdownToText(string $md): string {
    // Code blocks first so we don't strip syntax inside them
    $md = preg_replace('/```.*?```/s', '', $md);
    $md = preg_replace('/`([^`]+)`/', '$1', $md);
    // Images / links → keep alt or label only
    $md = preg_replace('/!\[([^\]]*)\]\([^\)]+\)/', '$1', $md);
    $md = preg_replace('/\[([^\]]+)\]\([^\)]+\)/', '$1', $md);
    // Headings, blockquotes, list markers
    $md = preg_replace('/^#{1,6}\s+/m', '', $md);
    $md = preg_replace('/^[>\-\*\+]\s+/m', '', $md);
    // Bold / italic
    $md = preg_replace('/(\*\*|__)(.*?)\1/', '$2', $md);
    $md = preg_replace('/(\*|_)(.*?)\1/', '$2', $md);
    // Horizontal rules
    $md = preg_replace('/^[-*_]{3,}$/m', '', $md);
    return trim(preg_replace('/\n{3,}/', "\n\n", $md));
}

echo markdownToText("# Hello **world**\n\nA [link](https://x.com) and `code`.");
// Hello world
//
// A link and code.
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.