הנה זה יתמוך ב multibyte וגם הורדתי את ה preg_match והחלפתי בפקודת IF פשוטה.
PHP קוד:
<?php
/**
* Count number of chars in a string
* Supports multi byte chars
*
* @param string $string
*/
function countChars( $string, $encoding='UTF-8' )
{
return mb_strlen($string, $encoding);
}
/**
* Check if the given int is between two values
*
* @param int $value
* @param int $firstElement
* @param int $secondElement
* @return bool
*/
function valueInBetween( $value, $firstElement, $secondElement )
{
return ( (int) $value > $firstElement && (int) $value < $secondElement ) ? TRUE : FALSE;
}
# Count english
$string = "asfcas";
echo countChars($string);
# Count hebrew multi byte
$string = "דגעגכדעיגד";
echo countChars($string);
# Check if it's bettwen two values, English
$string = "asfcas";
var_dump(valueInBetween(countChars($string), 4, 111)); // true
# Check if it's bettwen two values, Hebrew
$string = "שגדעגיעק";
var_dump(valueInBetween(countChars($string), 4, 111)); // true
$string = "שגדעגיעק";
var_dump(valueInBetween(countChars($string), 12, 111)); // false