array_unique对阿拉伯字符串无效,如何去除阿拉伯字符重复值?
解决阿拉伯字符串去重问题
你的代码里有几个关键错误导致array_unique没起作用,直接修正如下:
错误分析
- 变量名遗漏
$符号:step1、step2、step3都是PHP变量,调用时必须加$前缀,原代码里的implode(' ',step1)、array_unique(step2)、echo "step3"都是错误写法。 - 步骤逻辑错误:你把拆分后的数组转成了字符串
$step2,再把字符串传给array_unique——但array_unique只能处理数组,字符串会被当成单个元素的数组,自然没法去重。
修正后的代码
$input = "اللہ"; // 拆分UTF-8字符串为单个字符的数组 $step1 = preg_split("/(?<!^)(?!$)/u", $input); // 直接对数组去重 $step3 = array_unique($step1); // 转成带空格的字符串输出 echo implode(' ', $step3);
运行结果
输出就是你期望的:ا ل ھ
如果想简化代码,还可以把步骤合并:
$input = "اللہ"; echo implode(' ', array_unique(preg_split("/(?<!^)(?!$)/u", $input)));
内容的提问来源于stack exchange,提问作者Qaiser420
相关产品推荐
相关产品推荐

