webfoo / html-to-shopify-rich-text
A PHP library to convert HTML to Shopify's Rich Text format
1.0.2
2025-04-05 14:31 UTC
Requires
- php: ^8.3
- ext-dom: *
- ext-json: *
- ext-mbstring: *
- ezyang/htmlpurifier: ^4.16
- symfony/css-selector: ^7.2
- symfony/dom-crawler: ^7.2
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-06-05 14:52:58 UTC
README
A PHP package that converts HTML content to Shopify's Rich Text format. This package provides a simple and reliable way to transform HTML content into the JSON structure that Shopify's Rich Text editor expects.
Features
- Converts common HTML elements to Shopify Rich Text format
- Supports headings (h1-h6)
- Handles paragraphs, lists (ordered and unordered)
- Processes inline elements (bold, italic, links)
- Sanitizes HTML input
- Validates HTML structure
- Handles whitespace normalization
- Provides detailed error handling
Installation
You can install the package via Composer:
composer require webfoo/html-to-shopify-rich-text
Usage
use Webfoo\HtmlToShopifyRichText\HtmlToShopifyRichText; $html = '<h1>Hello World</h1><p>This is a <strong>test</strong> paragraph.</p>'; $richText = HtmlToShopifyRichText::convert($html); // $richText will contain the JSON representation of the Shopify Rich Text
Supported HTML Elements
- Headings:
<h1>
through<h6>
- Paragraphs:
<p>
- Lists:
<ul>
,<ol>
,<li>
- Links:
<a href="...">
- Bold:
<strong>
,<b>
- Italic:
<em>
,<i>
Error Handling
The package throws specific exceptions for different error scenarios:
InvalidHtmlException
: Thrown when the HTML is invalid or cannot be parsedConversionException
: Thrown when the conversion process failsJsonEncodingException
: Thrown when the JSON encoding fails
Example error handling:
try { $richText = HtmlToShopifyRichText::convert($html); } catch (InvalidHtmlException $e) { // Handle invalid HTML } catch (ConversionException $e) { // Handle conversion errors } catch (JsonEncodingException $e) { // Handle JSON encoding errors }
Requirements
- PHP 8.1 or higher
- Composer
- Required dependencies:
symfony/dom-crawler
ezyang/htmlpurifier
License
This package is open-sourced software licensed under the MIT license.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.