Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Html5 Laravel Package

masterminds/html5

Standards-compliant HTML5 parser and serializer for PHP. Provides SAX-like event parsing, DOM tree building, namespace support, Composer install, and interoperability with QueryPath. Stable and widely used in production.

View on GitHub
Deep Wiki
Context7

An HTML5 parser and serializer for PHP.

Frequently asked questions about Html5
How do I use this package in Laravel for sanitizing user-generated HTML content before rendering in Blade?
Install via Composer (`masterminds/html5`), then parse and sanitize HTML using the DOM parser. For example, load user input with `new DOMDocument()` or `new HTML5()`, then traverse the DOM tree to remove unsafe elements (e.g., `<script>`). Pair with Laravel’s Blade `@verbatim` or `@escape` for output safety. Avoid regex-based sanitization—this package ensures HTML5 compliance while allowing controlled DOM manipulation.
Will this package work with Laravel’s Mailable classes for generating HTML emails?
Yes, use `saveHTML()` to serialize standardized HTML emails. Integrate with Laravel’s `Mailable` classes by passing parsed DOM objects to the `build()` method. This ensures consistent formatting across emails, especially when combining dynamic content with static templates. For attachments, serialize HTML fragments with `saveHTML()` before embedding in `MimeMessage`.
Does this package support Laravel’s async queues for parsing large HTML files (e.g., scraping or batch processing)?
No, the parser is **not reentrant**, meaning it cannot safely handle concurrent requests in Laravel Queues. For async workflows, process files synchronously in a single thread or use batch processing with `saveHTML()` to serialize results before queuing. Avoid parsing HTML directly in queue workers to prevent race conditions.
How do I configure this package to handle XML-style namespaces (e.g., `<html:div>`) in Laravel’s CMS content?
Enable namespace support by passing `['xmlNamespaces' => true]` to the parser constructor. For hybrid XML/HTML, pre-process content with regex or use `disable_html_ns` for strict HTML5 parsing. In Laravel, wrap this logic in a service class (e.g., `HtmlParserService`) to abstract configuration. Test with your CMS’s markup to ensure compatibility.
Can I use this package to validate HTML5 compliance in API responses (e.g., JSON:API or GraphQL payloads)?
Yes, serialize HTML fragments with `saveHTML()` to enforce HTML5 standards in API responses. For validation, parse the output with the same library and compare against expected DOM structure. In Laravel, create a middleware to pre-process HTML payloads before sending. This ensures frontend consistency, especially for SPAs consuming Laravel-generated HTML.
What’s the best way to integrate this with Laravel’s Blade templates for dynamic HTML generation?
Use the package’s `DOMDocument` compatibility to parse raw HTML strings in Blade directives (e.g., `@parseHtml`). For example, create a custom directive `@sanitize` that processes user input before rendering. Alternatively, serialize static HTML templates with `saveHTML()` and cache them. Avoid inline parsing in Blade—offload logic to a service class for maintainability.
Does this package conflict with Laravel’s built-in `dom` extension or other HTML-related packages like `dompdf`?
No direct conflicts, but verify PHP’s `dom` extension is enabled for full DOMDocument interoperability. For `dompdf`, use this package to pre-process HTML (e.g., sanitize or restructure) before passing to `dompdf`. Test both packages together in a Laravel service container to ensure compatibility. If issues arise, check for version-specific bugs in the package’s GitHub issues.
How do I extend this parser to add custom event handlers (e.g., for logging or modifying DOM nodes during parsing)?
Implement the `HTML5_EventHandler` interface and pass your class to the parser constructor. Override methods like `handleStartTag()` or `handleCharacterData()` to inject logic (e.g., log nodes or modify attributes). In Laravel, bind your handler to a service container for dependency injection. This is useful for audit trails or dynamic DOM transformations during parsing.
What are the performance implications of parsing large HTML files (e.g., 10MB+) in Laravel?
Parsing large files can consume significant memory, especially with DOM tree building. For high-volume tasks, use the SAX-like parser (event-driven) instead of DOMDocument to reduce memory overhead. In Laravel, offload parsing to a queue worker with `saveHTML()` for serialization. Monitor memory usage with `memory_get_usage()` and optimize by limiting DOM depth or using chunked processing.
Are there alternatives to this package for HTML parsing in Laravel, and when should I choose them?
Alternatives include `symfony/dom-crawler` (for scraping) or `php-html-parser/php-html-parser` (lighter weight). Use this package if you need **HTML5 compliance**, **event-driven parsing**, or **DOMDocument interoperability**. Choose `symfony/dom-crawler` for scraping or `purifier` for aggressive sanitization. For minimalist needs, `str_replace()` or `strip_tags()` may suffice, but they lack standards compliance.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata