Arabic
----------------------------------------------------------------------
Copyright (c) 2006-2023 Khaled Al-Sham'aa.
http://www.ar-php.org
PHP Version >= 5.6
LICENSE
This program is open source product; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/lgpl.txt.
Class Name: PHP and Arabic Language
Filename: ar-php.php
Original Author(s): Khaled Al-Sham'aa khaled@ar-php.org
Purpose: Set of PHP classes developed to enhance Arabic web applications by providing set of tools includes stem-based searching, translitiration, soundex, Hijri calendar, charset detection and converter, spell numbers, keyboard language, Muslim prayer time, auto-summarization, and more...
Tags
Table of Contents
- $version : string
 - __construct() : mixed
 - addGlyphs() : void
 - Add extra glyphs
 - ar2en() : string
 - Transliterate Arabic string into English by render them in the orthography of the English language
 - arIdentify() : array<string|int, int>
 - Identify Arabic text in a given UTF-8 multi language string
 - arNormalizeText() : string
 - Normalizes the input provided and returns the normalized string.
 - arPlural() : string
 - Get proper Arabic plural form There are 4 plural forms in Arabic language: - Form for 2 - Form for numbers that end with a number between 3 and 10 (like: 103, 1405, 23409) - Form for numbers that end with a number between 11 and 99 (like: 1099, 278) - Form for numbers above 100 ending with 0, 1 or 2 (like: 100, 232, 3001)
 - arQueryAllForms() : string
 - Get most possible Arabic lexical forms of user search keywords
 - arQueryOrderBy() : string
 - Get more relevant order by section related to the user search keywords
 - arQueryWhereCondition() : string
 - Build WHERE section of the SQL statement using defind lex's rules, search mode [AND | OR], and handle also phrases (inclosed by "") using normal LIKE condition to match it as it is.
 - arSentiment() : array<string|int, bool|float>
 - Arabic Sentiment Analysis
 - arSummary() : string
 - Core summarize function that implement required steps in the algorithm
 - arSummaryKeywords() : string
 - Extract keywords from a given Arabic string (document content)
 - arSummaryLoadExtra() : void
 - Load enhanced Arabic stop words list
 - date() : string
 - Format a local time/date in Arabic string
 - dateCorrection() : int
 - Calculate Hijri calendar correction using Um-Al-Qura calendar information
 - dd2dms() : string
 - Convert coordinates presented in float number in degree unit scale (e.g. -12.5822 value) into degrees, minutes and seconds (e.g. -12°34'56" formula)
 - dd2olc() : string
 - Encode a location coordinates (latitude and longitude in WGS84) into Open Location Code Ref: https://github.com/google/open-location-code/blob/master/docs/specification.md
 - diffForHumans() : string
 - Get the difference in a human readable format.
 - dms2dd() : float
 - Convert coordinates presented in degrees, minutes and seconds (e.g. 12°34'56"S formula) into usual float number in degree unit scale (e.g. -12.5822 value)
 - en2ar() : string
 - Transliterate English string into Arabic by render them in the orthography of the Arabic language
 - fixKeyboardLang() : string
 - This method will automatically detect the language of content supplied in the input string. It will return the suggestion of correct inserted text.
 - getDateMode() : int
 - Getting $mode value that refer to output mode format 1) Hijri format (Islamic calendar) 2) Arabic month names used in Middle East countries 3) Arabic Transliteration of Gregorian month names 4) Both of 2 and 3 formats together 5) Libyan way 6) Algeria and Tunis style 7) Morocco style 8) Hijri format (Islamic calendar) in English
 - getNorm() : bool
 - Get given normalization form status.
 - getNumberFeminine() : int
 - Get the feminine flag of counted object
 - getNumberFormat() : int
 - Get the grammer position flag of counted object
 - getNumberOrder() : int
 - Get the ordering flag value
 - getPrayTime() : array<string|int, string>
 - Calculate Salat times for the date set in setSalatDate methode, and location set in setSalatLocation.
 - getQibla() : float
 - Determine Qibla direction using basic spherical trigonometric formula
 - getQueryArrFields() : array<string|int, string>
 - Getting values of $_fields Array in array format
 - getQueryMode() : int
 - Getting $mode propority value that refer to search mode [0 for OR logic | 1 for AND logic]
 - getQueryStrFields() : string
 - Getting values of $_fields array in String format (comma delimated)
 - getSoundexCode() : string
 - Get the soundex key calculation method used now
 - getSoundexLang() : string
 - Get the soundex key language used now
 - getSoundexLen() : int
 - Get the soundex key length used now
 - hijriMonthDays() : int
 - Calculate how many days in a given Hijri month
 - int2indic() : string
 - Represent integer number in Arabic-Indic digits using HTML entities
 - int2str() : string
 - Spell integer number in Arabic idiom
 - int2strItem() : string
 - Spell integer number in Arabic idiom followed by plural form of the counted item
 - isArabic() : bool
 - Find out if given string is Arabic text or not
 - isFemale() : bool
 - Arabic Gender Guesser
 - mktime() : int
 - This will return current Unix timestamp for given Hijri date (Islamic calendar)
 - mktimeCorrection() : int
 - Calculate Hijri calendar correction using Um-Al-Qura calendar information
 - money2str() : string
 - Spell number in Arabic idiom as money
 - noDots() : string
 - Strip Dots and Hamzat
 - olc2dd() : array<string|int, null|float>
 - Decode an Open Location Code string into its location coordinates in decimal degrees.
 - setDateMode() : object
 - Setting value for $_arDateMode scalar
 - setNorm() : object
 - Set given normalization form status.
 - setNumberFeminine() : object
 - Set feminine flag of the counted object
 - setNumberFormat() : object
 - Set the grammar position flag of the counted object
 - setNumberOrder() : object
 - Set the ordering flag, is it normal number or ordering number
 - setQueryArrFields() : object
 - Setting value for $_fields array
 - setQueryMode() : object
 - Setting $mode propority value that refer to search mode [0 for OR logic | 1 for AND logic]
 - setQueryStrFields() : object
 - Setting value for $_fields array
 - setSalatConf() : object
 - Setting rest of Salat calculation configuration
 - setSalatDate() : object
 - Setting date of day for Salat calculation
 - setSalatLocation() : object
 - Setting location information for Salat calculation
 - setSoundexCode() : object
 - Set the mapping code of the soundex key (default value is "soundex")
 - setSoundexLang() : object
 - Set the language of the soundex key (default value is "en")
 - setSoundexLen() : object
 - Set the length of soundex key (default value is 4)
 - soundex() : string
 - Arabic soundex algorithm takes Arabic word as an input and produces a character string which identifies a set words that are (roughly) phonetically alike.
 - standard() : string
 - This function will standardize Arabic text to follow writing standards (just like magazine/newspapers rules), for example spaces before and after punctuations, brackets and units etc .
 - str2int() : int
 - Convert Arabic idiom number string into Integer
 - stripHarakat() : string
 - Strip Harakat
 - strtotime() : int
 - Arabic arStrToTime Function
 - swapAe() : string
 - Make conversion to swap that odd Arabic text by original English sentence you meant when you type on your keyboard (if keyboard language was incorrect)
 - swapAf() : string
 - Make conversion to swap that odd Arabic text by original French sentence you meant when you type on your keyboard (if keyboard language was incorrect)
 - swapEa() : string
 - Make conversion to swap that odd English text by original Arabic sentence you meant when you type on your keyboard (if keyboard language was incorrect)
 - swapFa() : string
 - Make conversion to swap that odd French text by original Arabic sentence you meant when you type on your keyboard (if keyboard language was incorrect)
 - utf8Glyphs() : string
 - Convert Arabic string into glyph joining in UTF-8 hexadecimals stream (take care of whole the document including English sections as well as numbers and arcs etc...)
 - volc() : bool
 - Determine if an Open Location Code is valid.
 
Properties
$version
    public
        string
    $version
     = '6.3.4'
        
    
Methods
__construct()
    public
                __construct() : mixed
    
    
    
        Return values
mixed —addGlyphs()
Add extra glyphs
    public
                addGlyphs(string $char, string $hex[, bool $prevLink = true ][, bool $nextLink = true ]) : void
        
        Parameters
- $char : string
 - 
                    
Char to be added
 - $hex : string
 - 
                    
String of 16 hexadecimals digits refers to the letter unicode in the following order ISOLATED FORM, FINAL FORM, INITIAL FORM, MEDIAL FORM (e.g. for Arabic letter HEH 'FEE9FEEAFEEBFEEC')
 - $prevLink : bool = true
 - 
                    
If TRUE (default), when this letter be previous, then next will be linked to it
 - $nextLink : bool = true
 - 
                    
If TRUE (default), when this letter be next, then previous will be linked to it
 
Tags
Return values
void —ar2en()
Transliterate Arabic string into English by render them in the orthography of the English language
    public
                ar2en(string $string[, string $standard = 'UNGEGN' ]) : string
        
        Parameters
- $string : string
 - 
                    
Arabic string you want to transliterate
 - $standard : string = 'UNGEGN'
 - 
                    
Transliteration standard, default is UNGEGN and possible values are [UNGEGN, UNGEGN+, RJGC, SES, ISO233]
 
Tags
Return values
string —Out of vocabulary Arabic string in English characters
arIdentify()
Identify Arabic text in a given UTF-8 multi language string
    public
                arIdentify(string $str[, bool $html = true ]) : array<string|int, int>
        
        Parameters
- $str : string
 - 
                    
UTF-8 multi language string
 - $html : bool = true
 - 
                    
If True, then ignore the HTML tags (default is TRUE)
 
Tags
Return values
array<string|int, int> —Offset of the beginning and end of each Arabic segment in sequence in the given UTF-8 multi language string
arNormalizeText()
Normalizes the input provided and returns the normalized string.
    public
                arNormalizeText(string $text[, string $numeral = null ]) : string
        
        Parameters
- $text : string
 - 
                    
The input string to normalize.
 - $numeral : string = null
 - 
                    
Symbols used to represent numerical digits [Arabic, Hindu, or Persian] default is null (i.e., will not normalize digits in the given string).
 
Tags
Return values
string —The normalized string.
arPlural()
Get proper Arabic plural form There are 4 plural forms in Arabic language: - Form for 2 - Form for numbers that end with a number between 3 and 10 (like: 103, 1405, 23409) - Form for numbers that end with a number between 11 and 99 (like: 1099, 278) - Form for numbers above 100 ending with 0, 1 or 2 (like: 100, 232, 3001)
    public
                arPlural(string $singular, int $count[, string $plural2 = null ][, string $plural3 = null ][, string $plural4 = null ]) : string
        
        Parameters
- $singular : string
 - 
                    
Singular word (e.g., عنصر).
 - $count : int
 - 
                    
The number (e.g. item count) to determine the proper plural form.
 - $plural2 : string = null
 - 
                    
Plural form 2 (e.g., عنصران). If NULL [default] retrive from internal JSON dataset.
 - $plural3 : string = null
 - 
                    
Plural form 3 (e.g., عناصر). If NULL [default] retrive from internal JSON dataset.
 - $plural4 : string = null
 - 
                    
Plural form 4 (e.g., عنصرا). If NULL [default] retrive from internal JSON dataset.
 
Tags
Return values
string —Proper plural form of the given singular form
arQueryAllForms()
Get most possible Arabic lexical forms of user search keywords
    public
                arQueryAllForms(string $arg) : string
        
        Parameters
- $arg : string
 - 
                    
String that user search for
 
Tags
Return values
string —list of most possible Arabic lexical forms for given keywords
arQueryOrderBy()
Get more relevant order by section related to the user search keywords
    public
                arQueryOrderBy(string $arg) : string
        
        Parameters
- $arg : string
 - 
                    
String that user search for in the database table
 
Tags
Return values
string —sub SQL ORDER BY section
arQueryWhereCondition()
Build WHERE section of the SQL statement using defind lex's rules, search mode [AND | OR], and handle also phrases (inclosed by "") using normal LIKE condition to match it as it is.
    public
                arQueryWhereCondition(string $arg) : string
        
        Parameters
- $arg : string
 - 
                    
String that user search for in the database table
 
Tags
Return values
string —The WHERE section in SQL statement (MySQL database engine format)
arSentiment()
Arabic Sentiment Analysis
    public
                arSentiment(string $text) : array<string|int, bool|float>
        
        Parameters
- $text : string
 - 
                    
Arabic review string
 
Tags
Return values
array<string|int, bool|float> —of 2 elements: boolean isPositive (negative if false), and float probability (range from 0 to 1)
arSummary()
Core summarize function that implement required steps in the algorithm
    public
                arSummary(string $str, string $keywords, int $int, int $mode, int $output) : string
        
        Parameters
- $str : string
 - 
                    
Input Arabic document as a string
 - $keywords : string
 - 
                    
List of keywords higlited by search process
 - $int : int
 - 
                    
Sentences value (see $mode effect also)
 - $mode : int
 - 
                    
Mode of sentences count [1|2] for "number" and "rate" modes respectively
 - $output : int
 - 
                    
Output mode [1|2] for "summary" and "highlight" modes respectively
 
Tags
Return values
string —Output summary requested
arSummaryKeywords()
Extract keywords from a given Arabic string (document content)
    public
                arSummaryKeywords(string $str, int $int) : string
        
        Parameters
- $str : string
 - 
                    
Input Arabic document as a string
 - $int : int
 - 
                    
Number of keywords required to be extracting from input string (document content)
 
Tags
Return values
string —List of the keywords extracting from input Arabic string (document content)
arSummaryLoadExtra()
Load enhanced Arabic stop words list
    public
                arSummaryLoadExtra() : void
        
    
    
    Tags
Return values
void —date()
Format a local time/date in Arabic string
    public
                date(string $format, int $timestamp, int $correction) : string
        
        Parameters
- $format : string
 - 
                    
Format string (same as PHP date function)
 - $timestamp : int
 - 
                    
Unix timestamp
 - $correction : int
 - 
                    
To apply correction factor (+/- 1-2) to standard hijri calendar
 
Tags
Return values
string —Format Arabic date string according to given format string using the given integer timestamp or the current local time if no timestamp is given.
dateCorrection()
Calculate Hijri calendar correction using Um-Al-Qura calendar information
    public
                dateCorrection(int $time) : int
        
        Parameters
- $time : int
 - 
                    
Unix timestamp
 
Tags
Return values
int —Correction factor to fix Hijri calendar calculation using Um-Al-Qura calendar information
dd2dms()
Convert coordinates presented in float number in degree unit scale (e.g. -12.5822 value) into degrees, minutes and seconds (e.g. -12°34'56" formula)
    public
                dd2dms(float $value) : string
        
        Parameters
- $value : float
 - 
                    
Coordinate presented in float number in degree unit scale (e.g. -12.5822 value)
 
Tags
Return values
string —Equivalent coordinate presented in degrees, minutes and seconds (e.g. -12°34'56" formula)
dd2olc()
Encode a location coordinates (latitude and longitude in WGS84) into Open Location Code Ref: https://github.com/google/open-location-code/blob/master/docs/specification.md
    public
                dd2olc(float $latitude, float $longitude[, int $codeLength = 10 ]) : string
        
        Parameters
- $latitude : float
 - 
                    
Coordinate presented in float number in degree unit scale (e.g. 34.67175)
 - $longitude : float
 - 
                    
Coordinate presented in float number in degree unit scale (e.g. 36.263625)
 - $codeLength : int = 10
 - 
                    
Code length, default value is 10 (this provides an area that is 1/8000 x 1/8000 degree in size, roughly 14x14 meters)
 
Tags
Return values
string —Open Location Code string (e.g. 8G6RM7C7+PF)
diffForHumans()
Get the difference in a human readable format.
    public
                diffForHumans(int $time[, int|null $others = null ][, int $parts = 2 ][, bool $floor = true ]) : string
        
        Parameters
- $time : int
 - 
                    
the timestamp that is being compared.
 - $others : int|null = null
 - 
                    
if null passed, now will be used as comparison reference; if integer value, it will be used as reference timestamp. (default value is null).
 - $parts : int = 2
 - 
                    
maximum number of parts to display (default value is 2).
 - $floor : bool = true
 - 
                    
logic for rounding last part, if true then use floor, else use ceiling.
 
Tags
Return values
string —the difference in a human readable format.
dms2dd()
Convert coordinates presented in degrees, minutes and seconds (e.g. 12°34'56"S formula) into usual float number in degree unit scale (e.g. -12.5822 value)
    public
                dms2dd(string $value) : float
        
        Parameters
- $value : string
 - 
                    
Coordinate presented in degrees, minutes and seconds (e.g. 12°34'56"S formula)
 
Tags
Return values
float —Equivalent float number in degree unit scale (e.g. -12.5822 value)
en2ar()
Transliterate English string into Arabic by render them in the orthography of the Arabic language
    public
                en2ar(string $string[, string $locale = 'en_US' ]) : string
        
        Parameters
- $string : string
 - 
                    
English string you want to transliterate
 - $locale : string = 'en_US'
 - 
                    
Locale information (e.g. 'en_GB' or 'de_DE')
 
Tags
Return values
string —Out of vocabulary English string in Arabic characters
fixKeyboardLang()
This method will automatically detect the language of content supplied in the input string. It will return the suggestion of correct inserted text.
    public
                fixKeyboardLang(string $str) : string
        The accuracy of the automatic language detection increases with the amount of text entered.
Parameters
- $str : string
 - 
                    
Inserted string from the keyboard
 
Tags
Return values
string —Fixed string language and letter case to the better guess
getDateMode()
Getting $mode value that refer to output mode format 1) Hijri format (Islamic calendar) 2) Arabic month names used in Middle East countries 3) Arabic Transliteration of Gregorian month names 4) Both of 2 and 3 formats together 5) Libyan way 6) Algeria and Tunis style 7) Morocco style 8) Hijri format (Islamic calendar) in English
    public
                getDateMode() : int
        
    
    
    Tags
Return values
int —Value of $mode properity
getNorm()
Get given normalization form status.
    public
                getNorm(string $form) : bool
        
        Parameters
- $form : string
 - 
                    
One of the normalization forms ['stripTatweel', 'stripTanween', 'stripShadda', 'stripLastHarakat', 'stripWordHarakat', 'normaliseLamAlef', 'normaliseAlef', 'normaliseHamza', 'normaliseTaa']
 
Tags
Return values
bool —Selected normalization form status.
getNumberFeminine()
Get the feminine flag of counted object
    public
                getNumberFeminine() : int
        
    
    
    Tags
Return values
int —return current setting of counted object feminine flag
getNumberFormat()
Get the grammer position flag of counted object
    public
                getNumberFormat() : int
        
    
    
    Tags
Return values
int —return current setting of counted object grammer position flag
getNumberOrder()
Get the ordering flag value
    public
                getNumberOrder() : int
        
    
    
    Tags
Return values
int —return current setting of ordering flag value
getPrayTime()
Calculate Salat times for the date set in setSalatDate methode, and location set in setSalatLocation.
    public
                getPrayTime() : array<string|int, string>
        
    
    
    Tags
Return values
array<string|int, string> —of Salat times + sun rise in the following format hh:mm where hh is the hour in local format and 24 mode mm is minutes with leading zero to be 2 digits always array items is [$Fajr, $Sunrise, $Dhuhr, $Asr, $Maghrib, $Isha, $Sunset, $Midnight, $Imsak, array $timestamps]
getQibla()
Determine Qibla direction using basic spherical trigonometric formula
    public
                getQibla() : float
        
    
    
    Tags
Return values
float —Qibla Direction (from the north direction) in degrees
getQueryArrFields()
Getting values of $_fields Array in array format
    public
                getQueryArrFields() : array<string|int, string>
        
    
    
    Tags
Return values
array<string|int, string> —Value of $_fields array in Array format
getQueryMode()
Getting $mode propority value that refer to search mode [0 for OR logic | 1 for AND logic]
    public
                getQueryMode() : int
        
    
    
    Tags
Return values
int —Value of $mode properity
getQueryStrFields()
Getting values of $_fields array in String format (comma delimated)
    public
                getQueryStrFields() : string
        
    
    
    Tags
Return values
string —Values of $_fields array in String format (comma delimated)
getSoundexCode()
Get the soundex key calculation method used now
    public
                getSoundexCode() : string
        
    
    
    Tags
Return values
string —return current setting for soundex key calculation method
getSoundexLang()
Get the soundex key language used now
    public
                getSoundexLang() : string
        
    
    
    Tags
Return values
string —return current setting for soundex key language
getSoundexLen()
Get the soundex key length used now
    public
                getSoundexLen() : int
        
    
    
    Tags
Return values
int —return current setting for soundex key length
hijriMonthDays()
Calculate how many days in a given Hijri month
    public
                hijriMonthDays(int $m, int $y[, bool $umAlqoura = true ]) : int
        
        Parameters
- $m : int
 - 
                    
Hijri month (Islamic calendar)
 - $y : int
 - 
                    
Hijri year (Islamic calendar), valid range[1320-1459]
 - $umAlqoura : bool = true
 - 
                    
Should we implement Um-Al-Qura calendar correction in this calculation (default value is true)
 
Tags
Return values
int —Days in a given Hijri month
int2indic()
Represent integer number in Arabic-Indic digits using HTML entities
    public
                int2indic(int $number) : string
        
        Parameters
- $number : int
 - 
                    
The number you want to present in Arabic-Indic digits using HTML entities
 
Tags
Return values
string —The Arabic-Indic digits represent inserted integer number using HTML entities
int2str()
Spell integer number in Arabic idiom
    public
                int2str(int $number) : string
        
        Parameters
- $number : int
 - 
                    
The number you want to spell in Arabic idiom
 
Tags
Return values
string —The Arabic idiom that spells inserted number
int2strItem()
Spell integer number in Arabic idiom followed by plural form of the counted item
    public
                int2strItem(int $count, string $word) : string
        
        Parameters
- $count : int
 - 
                    
The number you want to spell in Arabic idiom
 - $word : string
 - 
                    
The counted item
 
Tags
Return values
string —The Arabic idiom that spells inserted number followed by plural form of the counted item.
isArabic()
Find out if given string is Arabic text or not
    public
                isArabic(string $str) : bool
        
        Parameters
- $str : string
 - 
                    
String
 
Tags
Return values
bool —True if given string is UTF-8 Arabic, else will return False
isFemale()
Arabic Gender Guesser
    public
                isFemale(string $str) : bool
        This function attempts to guess the gender of Arabic names.
Arabic nouns are either masculine or feminine. Usually when referring to a male, a masculine noun is usually used and when referring to a female, a feminine noun is used. In most cases the feminine noun is formed by adding a special characters to the end of the masculine noun. Its not just nouns referring to people that have gender. Inanimate objects (doors, houses, cars, etc.) is either masculine or feminine. Whether an inanimate noun is masculine or feminine is mostly arbitrary.
Parameters
- $str : string
 - 
                    
Arabic word you would like to check if it is feminine
 
Tags
Return values
bool —Return true if input Arabic word is feminine
mktime()
This will return current Unix timestamp for given Hijri date (Islamic calendar)
    public
                mktime(int $hour, int $minute, int $second, int $hj_month, int $hj_day, int $hj_year, int $correction) : int
        
        Parameters
- $hour : int
 - 
                    
Time hour
 - $minute : int
 - 
                    
Time minute
 - $second : int
 - 
                    
Time second
 - $hj_month : int
 - 
                    
Hijri month (Islamic calendar)
 - $hj_day : int
 - 
                    
Hijri day (Islamic calendar)
 - $hj_year : int
 - 
                    
Hijri year (Islamic calendar)
 - $correction : int
 - 
                    
To apply correction factor (+/- 1-2) to standard Hijri calendar
 
Tags
Return values
int —Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
mktimeCorrection()
Calculate Hijri calendar correction using Um-Al-Qura calendar information
    public
                mktimeCorrection(int $m, int $y) : int
        
        Parameters
- $m : int
 - 
                    
Hijri month (Islamic calendar)
 - $y : int
 - 
                    
Hijri year (Islamic calendar), valid range [1420-1459]
 
Tags
Return values
int —Correction factor to fix Hijri calendar calculation using Um-Al-Qura calendar information
money2str()
Spell number in Arabic idiom as money
    public
                money2str(int $number[, string $iso = 'SYP' ][, string $lang = 'ar' ]) : string
        
        Parameters
- $number : int
 - 
                    
The number you want to spell in Arabic idiom as money
 - $iso : string = 'SYP'
 - 
                    
The three-letter Arabic country code defined in ISO 3166 standard
 - $lang : string = 'ar'
 - 
                    
The two-letter language code in ISO 639-1 standard [ar|en]
 
Tags
Return values
string —The Arabic idiom that spells inserted number as money
noDots()
Strip Dots and Hamzat
    public
                noDots(string $text) : string
        
        Parameters
- $text : string
 - 
                    
Arabic text you would like to strip Dots and Hamzat from it.
 
Tags
Return values
string —Arabic text written using letters without dots and Hamzat
olc2dd()
Decode an Open Location Code string into its location coordinates in decimal degrees.
    public
                olc2dd(string $olc[, int $codeLength = 10 ]) : array<string|int, null|float>
        Ref: https://github.com/google/open-location-code/blob/master/docs/specification.md
Parameters
- $olc : string
 - 
                    
Open Location Code string (e.g. 8G6RM7C7+PF)
 - $codeLength : int = 10
 - 
                    
Code length, default value is 10 (this provides an area that is 1/8000 x 1/8000 degree in size, roughly 14x14 meters)
 
Tags
Return values
array<string|int, null|float> —Location coordinates in decimal degrees [latitude, longitude] in WGS84
setDateMode()
Setting value for $_arDateMode scalar
    public
                setDateMode([int $mode = 1 ]) : object
        
        Parameters
- $mode : int = 1
 - 
                    
Output mode of date function where:
- Hijri format (Islamic calendar)
 - Arabic month names used in Middle East countries
 - Arabic Transliteration of Gregorian month names
 - Both of 2 and 3 formats together
 - Libya style
 - Algeria and Tunis style
 - Morocco style
 - Hijri format (Islamic calendar) in English
 
 
Tags
Return values
object —$this to build a fluent interface
setNorm()
Set given normalization form status.
    public
                setNorm(string $form, bool $status) : object
        
        Parameters
- $form : string
 - 
                    
One of the normalization forms ['stripTatweel', 'stripTanween', 'stripShadda', 'stripLastHarakat', 'stripWordHarakat', 'normaliseLamAlef', 'normaliseAlef', 'normaliseHamza', 'normaliseTaa', 'all']
 - $status : bool
 - 
                    
Normalization form status [true|false]
 
Tags
Return values
object —$this to build a fluent interface.
setNumberFeminine()
Set feminine flag of the counted object
    public
                setNumberFeminine(int $value) : object
        
        Parameters
- $value : int
 - 
                    
Counted object feminine (1 for masculine & 2 for feminine)
 
Tags
Return values
object —$this to build a fluent interface
setNumberFormat()
Set the grammar position flag of the counted object
    public
                setNumberFormat(int $value) : object
        
        Parameters
- $value : int
 - 
                    
Grammar position of counted object (1 if Marfoua & 2 if Mansoub or Majrour)
 
Tags
Return values
object —$this to build a fluent interface
setNumberOrder()
Set the ordering flag, is it normal number or ordering number
    public
                setNumberOrder(int $value) : object
        
        Parameters
- $value : int
 - 
                    
Is it an ordering number? default is 1 (use 1 if no and 2 if yes)
 
Tags
Return values
object —$this to build a fluent interface
setQueryArrFields()
Setting value for $_fields array
    public
                setQueryArrFields(array<string|int, string> $arrConfig) : object
        
        Parameters
- $arrConfig : array<string|int, string>
 - 
                    
Name of the fields that SQL statement will search them (in array format where items are those fields names)
 
Tags
Return values
object —$this to build a fluent interface
setQueryMode()
Setting $mode propority value that refer to search mode [0 for OR logic | 1 for AND logic]
    public
                setQueryMode(int $mode) : object
        
        Parameters
- $mode : int
 - 
                    
Setting value to be saved in the $mode propority [0 for OR logic | 1 for AND logic]
 
Tags
Return values
object —$this to build a fluent interface
setQueryStrFields()
Setting value for $_fields array
    public
                setQueryStrFields(string $strConfig) : object
        
        Parameters
- $strConfig : string
 - 
                    
Name of the fields that SQL statement will search them (in string format using comma as delimated)
 
Tags
Return values
object —$this to build a fluent interface
setSalatConf()
Setting rest of Salat calculation configuration
    public
                setSalatConf([string $sch = 'Shafi' ][, float $sunriseArc = -0.833333 ][, float $ishaArc = -17.5 ][, float $fajrArc = -19.5 ][, string $view = 'Sunni' ]) : object
        Convention [Fajr Angle, Isha Angle]
- Muslim World League [-18, -17]
 - Islamic Society of North America (ISNA) [-15, -15]
 - Egyptian General Authority of Survey [-19.5, -17.5]
 - Umm al-Qura University, Makkah [-18.5, Isha 90 min after Maghrib, 120 min during Ramadan]
 - University of Islamic Sciences, Karachi [-18, -18]
 - Institute of Geophysics, University of Tehran [-17.7, -14*]
 - Shia Ithna Ashari, Leva Research Institute, Qum [-16, -14]
 
(*) Isha angle is not explicitly defined in Tehran method Fajr Angle = $fajrArc, Isha Angle = $ishaArc
Parameters
- $sch : string = 'Shafi'
 - 
                    
[Shafi|Hanafi] to define Muslims Salat calculation method (affect Asr time)
 - $sunriseArc : float = -0.833333
 - 
                    
Sun rise arc (default value is -0.833333)
 - $ishaArc : float = -17.5
 - 
                    
Isha arc (default value is -18)
 - $fajrArc : float = -19.5
 - 
                    
Fajr arc (default value is -18)
 - $view : string = 'Sunni'
 - 
                    
[Sunni|Shia] to define Muslims Salat calculation method (affect Maghrib and Midnight time)
 
Tags
Return values
object —$this to build a fluent interface
setSalatDate()
Setting date of day for Salat calculation
    public
                setSalatDate([int $m = 8 ][, int $d = 2 ][, int $y = 1975 ]) : object
        
        Parameters
- $m : int = 8
 - 
                    
Month of date you want to calculate Salat in
 - $d : int = 2
 - 
                    
Day of date you want to calculate Salat in
 - $y : int = 1975
 - 
                    
Year (four digits) of date you want to calculate Salat in
 
Tags
Return values
object —$this to build a fluent interface
setSalatLocation()
Setting location information for Salat calculation
    public
                setSalatLocation([float $l1 = 36.20278 ][, float $l2 = 37.15861 ][, int $z = 2 ], int $e) : object
        
        Parameters
- $l1 : float = 36.20278
 - 
                    
Latitude of location you want to calculate Salat time in
 - $l2 : float = 37.15861
 - 
                    
Longitude of location you want to calculate Salat time in
 - $z : int = 2
 - 
                    
Time Zone, offset from UTC (see also Greenwich Mean Time)
 - $e : int
 - 
                    
Elevation, it is the observer's height in meters.
 
Tags
Return values
object —$this to build a fluent interface
setSoundexCode()
Set the mapping code of the soundex key (default value is "soundex")
    public
                setSoundexCode(string $str) : object
        
        Parameters
- $str : string
 - 
                    
Soundex key mapping code [soundex|phonix]
 
Tags
Return values
object —$this to build a fluent interface
setSoundexLang()
Set the language of the soundex key (default value is "en")
    public
                setSoundexLang(string $str) : object
        
        Parameters
- $str : string
 - 
                    
Soundex key language [ar|en]
 
Tags
Return values
object —$this to build a fluent interface
setSoundexLen()
Set the length of soundex key (default value is 4)
    public
                setSoundexLen(int $integer) : object
        
        Parameters
- $integer : int
 - 
                    
Soundex key length
 
Tags
Return values
object —$this to build a fluent interface
soundex()
Arabic soundex algorithm takes Arabic word as an input and produces a character string which identifies a set words that are (roughly) phonetically alike.
    public
                soundex(string $word) : string
        
        Parameters
- $word : string
 - 
                    
Arabic word you want to calculate its soundex
 
Tags
Return values
string —Soundex value for a given Arabic word
standard()
This function will standardize Arabic text to follow writing standards (just like magazine/newspapers rules), for example spaces before and after punctuations, brackets and units etc .
    public
                standard(string $text) : string
        ..
Parameters
- $text : string
 - 
                    
Arabic text you would like to standardize
 
Tags
Return values
string —Standardized version of input Arabic text
str2int()
Convert Arabic idiom number string into Integer
    public
                str2int(string $str) : int
        
        Parameters
- $str : string
 - 
                    
The Arabic idiom that spells input number
 
Tags
Return values
int —The number you spell it in the Arabic idiom
stripHarakat()
Strip Harakat
    public
                stripHarakat(string $text[, bool $tatweel = true ][, bool $tanwen = true ][, bool $shadda = true ][, bool $last = true ][, bool $harakat = true ]) : string
        
        Parameters
- $text : string
 - 
                    
Arabic text you would like to strip Harakat from it.
 - $tatweel : bool = true
 - 
                    
Strip Tatweel (default is TRUE).
 - $tanwen : bool = true
 - 
                    
Strip Tanwen (default is TRUE).
 - $shadda : bool = true
 - 
                    
Strip Shadda (default is TRUE).
 - $last : bool = true
 - 
                    
Strip last Harakat (default is TRUE).
 - $harakat : bool = true
 - 
                    
Strip in word Harakat (default is TRUE).
 
Tags
Return values
string —Arabic string clean from selected Harakat
strtotime()
Arabic arStrToTime Function
    public
                strtotime(string $text, int $now) : int
        Function to parse about any Arabic textual datetime description into a Unix timestamp.
The function expects to be given a string containing an Arabic date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 GMT), relative to the timestamp given in now, or the current time if none is supplied.
Parameters
- $text : string
 - 
                    
The string to parse, according to the GNU Date Input Formats syntax (in Arabic).
 - $now : int
 - 
                    
The timestamp used to calculate the returned value.
 
Tags
Return values
int —Returns a timestamp on success, FALSE otherwise
swapAe()
Make conversion to swap that odd Arabic text by original English sentence you meant when you type on your keyboard (if keyboard language was incorrect)
    public
                swapAe(string $text) : string
        
        Parameters
- $text : string
 - 
                    
Odd Arabic string
 
Tags
Return values
string —Normal English string
swapAf()
Make conversion to swap that odd Arabic text by original French sentence you meant when you type on your keyboard (if keyboard language was incorrect)
    public
                swapAf(string $text) : string
        
        Parameters
- $text : string
 - 
                    
Odd Arabic string
 
Tags
Return values
string —Normal French string
swapEa()
Make conversion to swap that odd English text by original Arabic sentence you meant when you type on your keyboard (if keyboard language was incorrect)
    public
                swapEa(string $text) : string
        
        Parameters
- $text : string
 - 
                    
Odd English string
 
Tags
Return values
string —Normal Arabic string
swapFa()
Make conversion to swap that odd French text by original Arabic sentence you meant when you type on your keyboard (if keyboard language was incorrect)
    public
                swapFa(string $text) : string
        
        Parameters
- $text : string
 - 
                    
Odd French string
 
Tags
Return values
string —Normal Arabic string
utf8Glyphs()
Convert Arabic string into glyph joining in UTF-8 hexadecimals stream (take care of whole the document including English sections as well as numbers and arcs etc...)
    public
                utf8Glyphs(string $text[, int $max_chars = 50 ][, bool $hindo = true ][, bool $forcertl = false ]) : string
        
        Parameters
- $text : string
 - 
                    
Arabic string
 - $max_chars : int = 50
 - 
                    
Max number of chars you can fit in one line
 - $hindo : bool = true
 - 
                    
If true use Hindo digits else use Arabic digits
 - $forcertl : bool = false
 - 
                    
If true forces RTL in the bidi algorithm
 
Tags
Return values
string —Arabic glyph joining in UTF-8 hexadecimals stream (take care of whole document including English sections as well as numbers and arcs etc...)
volc()
Determine if an Open Location Code is valid.
    public
                volc(string $olc[, int $codeLength = 10 ]) : bool
        Ref: https://github.com/google/open-location-code/blob/master/docs/specification.md
Parameters
- $olc : string
 - 
                    
Open Location Code string (e.g. 8G6RM7C7+PF)
 - $codeLength : int = 10
 - 
                    
Code length, default value is 10 (this provides an area that is 1/8000 x 1/8000 degree in size, roughly 14x14 meters)
 
Tags
Return values
bool —String represents a valid Open Location Code.