2011-12-07 7 views
0

CakePHP 1.2 Inflectorクラスには、スペースをアンダースコアに変換し、アクセント付きの文字を非アクセント記号に変換し、非ワード文字を削除するslug()メソッドがあります。CakePHP 1.2のための非語句文字列をInflector :: slug()に追加するには?

特殊な二重引用符["と"]が削除されない場合があります。

私は引用符の文字を配置する必要がある行を見ることができますが、正しく認識される形式に文字を配置するためにどのツールを使用するのかわかりません。 (つまり、スペースに変換されて最終的に削除される特別な一重引用符です)。

答えて

0

私の最終的な回避策は、Chromeでエンコード機能を使用して必要な文字を取得することでした。通常、ウェブページにはUTF-8の文字セットがあるので、ChromeをISO-8859-1で表示させるようにしました。それはメニュー、ツール、エンコーディングであり、次にエンコーディングを選択します。

実際にInflector :: slug()を変更すると、'/[^\w\s]/' => ' ',行が'/–|“|’|â€|[^\w\s]/' => ' ',に変更されます。

私は[^ \ w \ s]を最後に変換し、最後にâ€を変換しました。 [^ \ w \ s]が早ければ€は空白に変換され、それを使用する他の特殊文字は変換されません。そして、同様の取引があります。

使用される置換文字列は網羅的ではありません。現在は特別なダッシュ、特別な逆二重引用符、特別な二重引用符、特別な一重引用符を必要とします。

0

非アスキー文字を削除してからインフレクターに挿入することができます。

<?php $output = preg_replace('/[^(\x20-\x7F)]*/','', $input); ?> 
+0

私はできましたが、特殊なユニコード文字が変換される文字は、ASCII文字と非ASCII文字で構成されていると思います。/[^ \ w \ s]/toを使用するデフォルトの実装に関する問題の1つは、€からの€が削除され、残りの文字は有効な単語文字として残ります。 – Reuben