Hi Behzad,

I would try a different approach ...

EXAMPLE (UTF-8):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Persia</title>
</head>
<body>
<?php
$username = '1aﺠﺟﺝﭻﭽﭼﭺ2b;
$encoding = 'utf-8';
$username = mbStringToArray($username, $encoding);
foreach($username as $char) {
       if (strlen($char) == 1) echo $char.' is not a multibyte character<br />';
}
function mbStringToArray ($string, $encoding) {
   $strlen = mb_strlen($string);
   while ($strlen) {
       $array[] = mb_substr($string,0,1,$encoding);
       $string = mb_substr($string,1,$strlen,$encoding);
       $strlen = mb_strlen($string);
   }
   return $array;
}
?>
</body>
</html>

As you can see I'm using the multibyte string functions [1] and split
$username into a character by character array.
Then I use strlen() for which an UTF-8 char has a length > 1. Note:
This might change with PHP6.
It also does not check for Persian characters only yet. You would have
to try something like this ...

EXAMPLE (UTF-8):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Persia</title>
</head>
<body>
<?php
$username = '1aﺠﺟﺝﭻﭽﭼﭺ2b';
$encoding = 'utf-8';
$chars = 
'ﺐﺒﺑﺏﭗﭙﭙپﺖﺘﺗﺕﺚﺜﺛﺙﺞﺠﺟﺝﭻﭽﭼﭺﺢﺤﺣﺡﺦﺨﺧﺥﺪﺪﺩﺩﺬﺬﺫﺫﺮﺮﺭﺭﺰﺰﺯﺯﮋﮋژژﺲﺴﺳﺱﺶﺸﺷﺵﺺﺼﺻﺹﺾﻀﺿﺽﻂﻄﻃﻁﻆﻈﻇﻅﻊﻌﻋﻉﻎﻐﻏﻍﻒﻔﻓﻑﻖﻘﻗﻕﮏﮑﮐکﮓﮕﮔگﻞﻠﻟﻝﻢﻤﻣﻡﻦﻨﻧﻥﻮﻮووﻪﻬﻫﻩﯽﻴﻳﻯ';
$username = mbStringToArray($username, $encoding);
foreach($username as $char) {
       if (strlen($char) == 1) echo $char.' is not a multibyte character<br />';
       if (mb_strpos($chars, $char, 0, $encoding) !== false) echo $char.' is
a Persian character<br />';
}
function mbStringToArray ($string, $encoding) {
   $strlen = mb_strlen($string);
   while ($strlen) {
       $array[] = mb_substr($string,0,1,$encoding);
       $string = mb_substr($string,1,$strlen,$encoding);
       $strlen = mb_strlen($string);
   }
   return $array;
}
?>
</body>
</html>

[1] http://in.php.net/manual/en/ref.mbstring.php
[2] http://in.php.net/manual/en/function.strlen.php

Reply via email to