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
Polyfill Mbstring

Polyfill Mbstring Laravel Package

symfony/polyfill-mbstring

Native PHP polyfill for the mbstring extension, providing partial mb_* functionality when the mbstring extension isn’t available. Part of Symfony’s Polyfill suite for consistent multibyte string handling across environments.

View on GitHub
Deep Wiki
Context7

Symfony polyfill for the Mbstring extension

Frequently asked questions about Polyfill Mbstring
How do I install symfony/polyfill-mbstring in a Laravel project?
Run `composer require symfony/polyfill-mbstring` in your Laravel project directory. The package auto-loads via Composer, so no additional configuration is needed. It will activate automatically when mbstring functions are called, even if the native extension is missing.
Does this polyfill work with Laravel’s built-in localization or Blade templates?
Yes, the polyfill integrates seamlessly with Laravel’s localization system (e.g., `Str::of()` with Unicode) and Blade templates. It ensures consistent multibyte string handling for dynamic content, including emoji and non-Latin scripts, without requiring changes to your existing code.
What Laravel versions officially support symfony/polyfill-mbstring?
The polyfill works with Laravel 5.8+ and PHP 7.2+ (PHP 7.0–7.1 may need testing for memory limits). Since it’s framework-agnostic, it’s compatible with any Laravel version that supports Composer autoloading. Always check your Laravel package’s PHP version requirements.
Will this break if ext-mbstring is installed later?
No, the polyfill gracefully falls back to the native extension if `ext-mbstring` is available. It prioritizes performance and reliability by using the real extension when possible, ensuring no breaking changes during migrations or environment updates.
Are there performance concerns for production Laravel apps?
The polyfill introduces ~10–20% overhead for heavy multibyte operations (e.g., bulk Unicode processing). For high-traffic Laravel apps, benchmark critical paths and enforce native `ext-mbstring` in production if performance is critical. Use `extension_loaded('mbstring')` to conditionally load the polyfill.
Which mbstring functions are *not* supported by this polyfill?
The polyfill covers ~95% of common mbstring functions but excludes niche ones like `mb_http_output()` or `mb_convert_kana()`. Check the [Symfony Polyfill Mbstring docs](https://github.com/symfony/polyfill-mbstring) for the full list. Audit your codebase for unsupported functions and refactor if needed.
Can I use this polyfill in Docker or CI environments without ext-mbstring?
Yes, but ensure `ext-iconv` is installed (a mandatory dependency). Add `RUN docker-php-ext-install iconv` to your Dockerfile or configure your CI to include it. The polyfill will then work consistently across all environments, eliminating ‘works on my machine’ issues.
How does this handle edge cases like emoji or Arabic text in Laravel validation?
The polyfill normalizes Unicode behavior, including emoji, surrogate pairs, and combining characters (e.g., Arabic diacritics). For Laravel validation, it ensures `Str::contains()`, `Str::length()`, and regex patterns work as expected. Test with real-world data (e.g., `mb_strlen('👨‍👩‍👧‍👦')`) to confirm compatibility.
Are there alternatives to symfony/pbct/mbstring for Laravel?
Other options include custom polyfills or third-party packages like `paragonie/mbstring`. However, `symfony/polyfill-mbstring` is the most battle-tested, actively maintained, and Laravel-ecosystem-aligned choice. It’s part of Symfony’s core infrastructure, ensuring long-term stability and compatibility with Laravel’s Symfony components.
How do I test if the polyfill is working in a Laravel app?
Run `php artisan tinker` and test a multibyte function like `mb_strlen('你好')`. If it returns `4` (correct), the polyfill is active. For CI, add a test case like `assertEquals(4, mb_strlen('你好'));` to your PHPUnit suite. Verify behavior across PHP 7.2+ and confirm no `ValueError` crashes occur.
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.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours