Script Detection
Contains Methods
Section titled “Contains Methods”Check if a string contains characters from specific scripts:
Asian Scripts
Section titled “Asian Scripts”use Cline\Babel\Babel;
// Any Asian script (Han, Hiragana, Katakana, Hangul)Babel::from('Hello 世界')->containsAsian(); // trueBabel::from('Hello World')->containsAsian(); // false
// Chinese (Han script)Babel::from('北京欢迎你')->containsChinese(); // trueBabel::from('こんにちは')->containsChinese(); // false (Japanese only)
// Japanese (Hiragana, Katakana, or Han)Babel::from('こんにちは')->containsJapanese(); // true (Hiragana)Babel::from('カタカナ')->containsJapanese(); // true (Katakana)Babel::from('日本')->containsJapanese(); // true (Han/Kanji)
// Korean (Hangul)Babel::from('안녕하세요')->containsKorean(); // trueBabel::from('한글')->containsKorean(); // trueEuropean Scripts
Section titled “European Scripts”// CyrillicBabel::from('Привет мир')->containsCyrillic(); // trueBabel::from('Москва')->containsCyrillic(); // true
// GreekBabel::from('Αθήνα')->containsGreek(); // trueBabel::from('Ελλάδα')->containsGreek(); // true
// LatinBabel::from('Hello')->containsLatin(); // trueBabel::from('Café')->containsLatin(); // trueBabel::from('北京')->containsLatin(); // falseMiddle Eastern Scripts
Section titled “Middle Eastern Scripts”// ArabicBabel::from('مرحبا بالعالم')->containsArabic(); // trueBabel::from('السلام')->containsArabic(); // true
// HebrewBabel::from('שלום עולם')->containsHebrew(); // trueBabel::from('ישראל')->containsHebrew(); // trueSouth Asian Scripts
Section titled “South Asian Scripts”// Devanagari (Hindi, Sanskrit, Marathi)Babel::from('नमस्ते')->containsDevanagari(); // trueBabel::from('Hello नमस्ते')->containsDevanagari(); // true
// BengaliBabel::from('বাংলা')->containsBengali(); // true
// TamilBabel::from('தமிழ்')->containsTamil(); // trueSoutheast Asian Scripts
Section titled “Southeast Asian Scripts”// ThaiBabel::from('สวัสดี')->containsThai(); // trueBabel::from('ประเทศไทย')->containsThai(); // true
// Vietnamese (Latin with diacritics)Babel::from('Việt Nam')->containsVietnamese(); // trueBabel::from('Xin chào')->containsVietnamese(); // trueCaucasian Scripts
Section titled “Caucasian Scripts”// ArmenianBabel::from('Հայdelays')->containsArmenian(); // true
// GeorgianBabel::from('საქართველო')->containsGeorgian(); // trueOther Scripts
Section titled “Other Scripts”// EmojiBabel::from('Hello 👋 World')->containsEmoji(); // trueBabel::from('Hello World')->containsEmoji(); // falseGeneric Script Detection
Section titled “Generic Script Detection”Check for any Unicode script by name:
Babel::from('Здравствуйте')->containsScript('Cyrillic'); // trueBabel::from('Γειά σου')->containsScript('Greek'); // trueBabel::from('नमस्ते')->containsScript('Devanagari'); // trueExclusive Methods
Section titled “Exclusive Methods”Check if a string contains only characters from specific sets:
Latin Only
Section titled “Latin Only”Babel::from('Hello World')->isLatin(); // trueBabel::from('Hello 123')->isLatin(); // true (includes common chars)Babel::from('Héllo')->isLatin(); // true (includes accented)Babel::from('Hello 世界')->isLatin(); // false (mixed)Numeric Only
Section titled “Numeric Only”Babel::from('12345')->isNumeric(); // trueBabel::from('123.45')->isNumeric(); // false (period)Babel::from('123abc')->isNumeric(); // false (letters)Alphanumeric Only
Section titled “Alphanumeric Only”Babel::from('Hello123')->isAlphanumeric(); // trueBabel::from('Hello World')->isAlphanumeric(); // false (space)Babel::from('Hello_123')->isAlphanumeric(); // false (underscore)Single Script Only
Section titled “Single Script Only”Check if string contains only one specific script:
Babel::from('Привет')->isScript('Cyrillic'); // trueBabel::from('Hello Привет')->isScript('Cyrillic'); // false (mixed)Babel::from('12345')->isScript('Common'); // true (numbers are Common)Encoding Detection
Section titled “Encoding Detection”Detect and validate string encodings:
// Detect encodingBabel::from('Hello')->detect(); // "ASCII"Babel::from('Héllo')->detect(); // "UTF-8"Babel::from(null)->detect(); // null
// Check specific encodingsBabel::from('Hello')->isUtf8(); // trueBabel::from('Hello')->isAscii(); // trueBabel::from('Héllo')->isAscii(); // false
// Validate encodingBabel::from($text)->isValidEncoding('UTF-8'); // true/falseBabel::from($text)->isValidEncoding('ISO-8859-1'); // true/falseUse Cases
Section titled “Use Cases”Content Moderation
Section titled “Content Moderation”function requiresTranslation(string $content): bool{ $babel = Babel::from($content);
return $babel->containsChinese() || $babel->containsJapanese() || $babel->containsKorean() || $babel->containsCyrillic() || $babel->containsArabic();}Form Validation
Section titled “Form Validation”function validateUsername(string $username): bool{ $babel = Babel::from($username);
// Only allow Latin alphanumeric return $babel->isAlphanumeric() && $babel->isLatin();}Localization Detection
Section titled “Localization Detection”function detectLanguageHint(string $text): ?string{ $babel = Babel::from($text);
return match (true) { $babel->containsJapanese() => 'ja', $babel->containsKorean() => 'ko', $babel->containsChinese() => 'zh', $babel->containsArabic() => 'ar', $babel->containsHebrew() => 'he', $babel->containsCyrillic() => 'ru', $babel->containsGreek() => 'el', $babel->containsThai() => 'th', $babel->containsVietnamese() => 'vi', $babel->containsDevanagari() => 'hi', $babel->containsBengali() => 'bn', $babel->containsTamil() => 'ta', $babel->containsArmenian() => 'hy', $babel->containsGeorgian() => 'ka', default => null, };}