2012-05-14 8 views
1

私はテキストをスラグ化する機能を持っていますが、 ":"を "/"に置き換える必要があることを除いてはうまくいきます。現在、それはすべての非文字または数字を " - "で置き換えます。ここにあります:slugify関数の ":"を "/"に置き換えるにはどうしたらいいですか?

function slugify($text) 
    { 
     // replace non letter or digits by - 
     $text = preg_replace('~[^\\pL\d]+~u', '-', $text); 

     // trim 
     $text = trim($text, '-'); 

     // transliterate 
     if (function_exists('iconv')) 
     { 
      $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); 
     } 

     // lowercase 
     $text = strtolower($text); 

     // remove unwanted characters 
     $text = preg_replace('~[^-\w]+~', '', $text); 

     if (empty($text)) 
     { 
      return 'n-a'; 
     } 

     return $text; 
    } 
+3

質問は何ですか? – zerkms

答えて

-1

ちょっとした変更を加えました。私は交換してください、私たちは-とほとんどすべてのものを交換できるように配列のセットが、/:を検索/置換を提供する:後で

$search = array('~[^\\pL\d:]+~u', '~:~'); 
$replace = array('-', '/'); 
$text = preg_replace($search, $replace, $text); 

をそして、この最後のpreg_replaceは空の文字列と私たち/を交換しました。だから、私はキャラクタークラスにフォワードスラッシュを許可しました。

次を出力
$text = preg_replace('~[^-\w\/]+~', '', $text); 

// antiques/antiquities 
echo slugify("Antiques:Antiquities"); 
+0

ええ私はそれを知っていますが、閃光機能についてはどうですか?私は単純に ":"を "/"に置き換えたいならstr_replaceをシンプルにすることができますが、 ":"は "/"でなく "/"で置き換えなければならないという点を除いて、 " - " – themihai

+0

@mihaiプロセスの一環として、この*を* slugify関数の中に入れます。 – Sampson

+0

は機能しません。 ":"は " - "に置き換えられます。 $ text = preg_replace( '〜[^ \\ pL \ d] +〜u'、 ' - '、$ text)があるので意味があると思います。 はありませんか? – themihai

関連する問題