在多种语言中使用substr(),包括使用php的阿拉伯语言

Nit*_*esh 5 php arabic substr

我知道在php中已经发布了很多关于阿拉伯语的问题,但我无法解决我的问题,因此我发布了这个问题:

我有一个完全用英语运行的PhP网站.现在,我希望它支持多种语言,包括法语,西班牙语,阿拉伯语,但我无法将它们与一个代码一起使用.问题是,我在很多地方使用了substr(),并且翻译后的字符与substr()无法正常工作.我也试过用mb_substsr(),但没用:(

DB中的字段是"utf8_general_ci",我已经放置了标题('Content-type:text/html; charset = UTF-8'); 在我的代码中允许以UTF-8呈现.

问题是我得到"?????" 代替确切的单词或者我用substr()得到错误的单词

请帮忙!!

小智 15

对于阿拉伯语单词:我想只获得位置2的角色.

$name = "MYNAME";
$Char = substr($Name,2,2);
echo $Char; // print N this okay.
Run Code Online (Sandbox Code Playgroud)

但对于像阿拉伯语这样的工作????,它会返回问号

case 1: $Char = substr($Name,0,1);     // Not Work and return question mark
case 2: $Char = substr($Name,1,1);     // Not Work and return question mark
case 3: $Char = substr($Name,0*2,1*2); // Work and return "?"
case 3: $Char = substr($Name,1*2,1*2); // Work and return "?"
Run Code Online (Sandbox Code Playgroud)

所以我找到了解决方案:

$Char = mb_substr($Name,1,1,'utf-8');  // Work and return "?".
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 5

首先,忘记substr。如果您打算用 UTF-8 编码您的字符串并将它们拆分,那么这mb_substr是唯一可行的解​​决方案。

您还需要确保MySql的连接编码也是 UTF-8。通过调用执行此操作

mysql_set_charset('utf8');
Run Code Online (Sandbox Code Playgroud)

就在mysql_connect. 如果您使用的是 mysql 扩展(例如 PDO)以外的数据访问层,则有等效的方法来执行此操作。