laminas/laminas-escaper
Securely escape untrusted data for HTML, HTML attributes, JavaScript, CSS, and URLs to prevent XSS. Laminas Escaper provides robust, context-aware escaping utilities for PHP apps and templates.
composer require laminas/laminas-escaperuse Laminas\Escaper\Escaper;
$escaper = new Escaper('UTF-8');
echo $escaper->escapeHtml($userInput); // e.g., "<script>alert(1)</script>" → "<script>..."
Laminas\Escaper\Escaper — no bootstrapping or config required. Start with escapeHtml() in templates or response rendering.Escaper helper.// views/user/profile.php
<h1><?= $escaper->escapeHtml($user->name) ?></h1>
<input value="<?= $escaper->escapeHtmlAttr($user->bio) ?>">
escapeHtml() → HTML text nodesescapeHtmlAttr() → HTML attribute valuesescapeJs() → JavaScript strings/variablesescapeCss() → CSS properties/valuesescapeUrl() → URL query parameters (note: not for entire URLs — use rawurlencode() first)Escaper in a service or view helper (e.g., $view->e($var, 'html')) for brevity.escape*() on already-escaped data. Test with known payloads like "<", "&", or " onclick=alert(1)".'UTF-8' (or set default via config). Non-UTF-8 input may lead to insecure fallbacks.escapeHtml() for attributes: Use escapeHtmlAttr() — it handles quotes and edge cases (", ', ) correctly.json_encode() in JS: For injecting PHP arrays into JavaScript, use json_encode() first, then escapeJs() on the string — but better yet, use escapeHtml() + <script type="application/json"> for safer embed.Escaper to support frameworks-specific contexts (e.g., Markdown, SQL parameter values) — but do not reuse for SQL (use PDO/Prepared Statements instead).var_dump($escaper->escapeHtml('<img src=x onerror=alert(1)>')) to quickly verify escaping behavior during development.How can I help you explore Laravel packages today?