helturkey / php-arabic-support
Modern Arabic text support for PHP and Laravel: slugs, normalization, search keys, digits, cleaning, filenames, excerpts, and validation.
Requires
- php: ^8.2
Requires (Dev)
- illuminate/database: ^11.3.1|^12.0|^13.0
- illuminate/events: ^11.3.1|^12.0|^13.0
- illuminate/support: ^11.3.1|^12.0|^13.0
- illuminate/translation: ^11.3.1|^12.0|^13.0
- laravel/pint: ^1.29
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^10.5.35
Suggests
- ext-intl: Enables ICU normalization, transliteration, and grapheme-aware string functions.
- ext-mbstring: Improves Unicode-safe lowercase, length, and substring handling. The package has fallbacks when it is missing.
- illuminate/database: Required only when using the optional Eloquent traits.
- illuminate/support: Required for Laravel service provider, facade, macros, and validation rules.
README
Modern Arabic text support for PHP and Laravel.
PHP Arabic Support is a PHP-first package for Arabic-safe text operations: readable Unicode slugs, ASCII slugs, normalization policies, search keys, Arabic digits, text cleaning, safe filenames, excerpts, validation rules, Laravel macros, and Eloquent helper traits.
Why this package is useful
Arabic text needs explicit handling. Generic string helpers often treat text as bytes or simple Unicode code points, while Arabic applications often need separate behavior for display, search, URLs, storage limits, and security.
A single visible Arabic character can be composed of a base letter plus one or more marks:
use ArabicSupport\Arabic; use ArabicSupport\Enums\LengthUnit; Arabic::length('مُ', LengthUnit::Grapheme); // 1 visible character Arabic::length('مُ', LengthUnit::Unicode); // 2 Unicode code points Arabic::length('مُ', LengthUnit::Byte); // UTF-8 byte length
Use LengthUnit::Grapheme for UI and display-safe limits, LengthUnit::Unicode for Unicode code-point limits, and LengthUnit::Byte for byte-limited protocols or storage.
The package also separates intent:
use ArabicSupport\Arabic; use ArabicSupport\Enums\ArabicPolicy; Arabic::normalize('قائِمةٌ تَجْرِيبيّة على مَنْصّةِ الإدارة', ArabicPolicy::Display); // قائِمةٌ تَجْرِيبيّة على مَنْصّةِ الإدارة Arabic::normalize('قائِمةٌ تَجْرِيبيّة على مَنْصّةِ الإدارة', ArabicPolicy::Search); // قائمه تجريبيه علي منصه الاداره Arabic::normalize('قائِمةٌ تَجْرِيبيّة على مَنْصّةِ الإدارة', ArabicPolicy::Slug); // قائمة تجريبية على منصة الإدارة
Search is aggressive and should not be displayed to users. Slug keeps readable Arabic spelling while removing marks that are poor for URLs.
Requirements
php >= 8.2
Recommended extensions:
ext-mbstring ext-intl
The package includes fallbacks, but these extensions improve Unicode lowercase, normalization, transliteration, grapheme-aware length, and substring behavior.
Installation
composer require helturkey/php-arabic-support
Quick examples
use ArabicSupport\Arabic; use ArabicSupport\Enums\LengthUnit; use ArabicSupport\Enums\SlugMode; Arabic::unicodeSlug('دليل المستخدم العربي 2026'); // دليل-المستخدم-العربي-2026 Arabic::asciiSlug('دليل المستخدم العربي 2026'); // dlil-almstkhdm-alarby-2026 Arabic::slug('دليل المستخدم العربي 2026', SlugMode::Unicode); // دليل-المستخدم-العربي-2026 Arabic::sanitize('<b>أَحْمَدُ، مَدْرَسَةٌ؟ iPhone X</b>'); // أَحْمَدُ، مَدْرَسَةٌ؟ iPhone X Arabic::sanitizeForSearch('<b>أَحْمَدُ، مَدْرَسَةٌ؟ iPhone X</b>'); // احمد مدرسه iphone x Arabic::safeFilename('تقرير: المبيعات/العام؟.pdf'); // تقرير-المبيعات-العام.pdf Arabic::limit('مُحَمَّد علي', 5, LengthUnit::Grapheme, '...'); // مُحَ...
Laravel
Laravel integration is optional. Plain PHP users do not install Laravel runtime dependencies.
use Illuminate\Support\Str; Str::arabicSlug('دليل المستخدم'); Str::arabicSearchKey('إدارة المبيعات'); Str::stripArabicDiacritics('مُحَمَّد'); Str::arabicExcerpt('<p>وصف منتج طويل</p>', 100);
Documentation
English documentation:
- Getting Started
- API Reference
- Normalization Policies
- Length Units
- Laravel Integration
- Direct Classes
- Security and Patterns
- Profanity Filtering
- Examples
Arabic documentation:
- البدء السريع
- مرجع الواجهة
- سياسات التطبيع
- وحدات الطول
- تكامل Laravel
- استخدام الأصناف مباشرة
- الأمان والأنماط
- فلترة الكلمات المحظورة
- أمثلة
License
MIT