2015-11-08 38 views
1

我用Yii Sluggable Behavior並且它對英語很好,但如果我在名稱文本字段中編寫阿拉伯語並創建一個新條目,則數據庫中slug列的值爲空。yii 2 sluggable behaviour arabic

public function behaviors() 
     { 
      return [ 
       [ 
        'class' => SluggableBehavior::className(), 
        'attribute' => 'name', 
        'ensureUnique'=>true, 
        'slugAttribute' => 'slug', 
       ], 
      ]; 
     } 

有沒有人知道如何讓它支持阿拉伯語和其他語言?如果沒有,是否有擴展可以完成這項工作?

在此先感謝。

+0

嘗試帶有音譯選項的https://github.com/zelenin/yii2-slug-behavior。 – Beowulfenator

+0

@Beowulfenator Zelenin slu behavior行爲轉換這個詞,例如「أحمد」=>「ahmd」,我不希望我想讓這些單詞保持原樣。例如:'مرحبابك'=>'مرحبا-بك' –

回答

2

創建slug通常涉及到使用正則表達式來排除不符合正常URL格式的不需要的字符。

preg_replacepreg_match中使用的正則表達式通常用於支持英語slug,因此排除了所有其他類型的字符,如阿拉伯語。

我建議你用適當的字符範圍寫下你自己的段擊功能,包括阿拉伯字符。事情是這樣的:

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

這將排除在範圍之外的其他所有字符A-Z,A-Z,0-9和阿拉伯字母。它還會保留下劃線,破折號和空格,如果需要,您可以稍後替換它們。