helturkey/php-arabic-support

Modern Arabic text support for PHP and Laravel: slugs, normalization, search keys, digits, cleaning, filenames, excerpts, and validation.

Maintainers

Package info

github.com/helturkey/php-arabic-support

pkg:composer/helturkey/php-arabic-support

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-05-07 14:28 UTC

This package is auto-updated.

Last update: 2026-05-07 14:45:17 UTC


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:

Arabic documentation:

License

MIT