Yii2 yii 2阿拉伯语

Yii2 yii 2阿拉伯语,yii2,arabic,slug,Yii2,Arabic,Slug,我使用了Yii Sluggable行为,它对英语很有效,但是如果我在name文本字段中编写阿拉伯语并创建一个新条目,则数据库中slug列的值为空 public function behaviors() { return [ [ 'class' => SluggableBehavior::className(), 'attribute' =&

我使用了Yii Sluggable行为,它对英语很有效,但是如果我在name文本字段中编写阿拉伯语并创建一个新条目,则数据库中slug列的值为空

public function behaviors()
        {
            return [
                [
                    'class' => SluggableBehavior::className(),
                    'attribute' => 'name',
                    'ensureUnique'=>true,
                    'slugAttribute' => 'slug',
                ],
            ];
        }
有人知道如何让它支持阿拉伯语和其他语言吗?如果没有,是否有做这项工作的扩展


提前感谢。

创建slug通常需要使用正则表达式来排除与正常URL格式不兼容的不需要的字符

preg_replace
preg_match
中使用的正则表达式通常用于支持英文slug,因此排除了所有其他类型的字符,如阿拉伯语

我建议您使用适当的字符范围(包括阿拉伯语字符)编写自己的slaging函数。大概是这样的:

$slug = preg_replace("/[^a-zA-Z0-9ء-ي _\-]/u", "", $title);

这将排除除a-z、a-z、0-9和阿拉伯字母表中的字符以外的所有字符。它还将保留下划线、破折号和空格,您可以在以后需要时替换它们。

尝试使用音译选项。@Beowulfenator Zelenin slug Behavior转换单词,例如“ahmd”,我不想让单词保持原样。例如:“مح㶕㶕ك”=>“مح㶕㶕-㶕”