古いサイトを CodeIgniter に変換しようとしていますが、これには古い URL の保存が含まれます。#、AZ、az のいずれかの 1 文字を渡すことができる必要があります。これが私のパターンです:
/^[a-zA-Z#]$/
preg_match() に渡すことで、すべてのテストで問題なく動作するようです。次のように CI ルートに追加するだけです。
$route['(:any)/(/^[a-zA-Z#]$/)'] = "collection/view/$1/alpha/$2";
そして、それは私にこのエラーを与えています:
Message: preg_match(): Unknown modifier '/'
私は一生、このパターンをマッサージして CI が受け入れられるようにすることはできません。案外逃げられていると思います。どんな助けでも大歓迎です。
アップデート:
/core/Router.php に飛び込んで、CI がパターンで何を行っているかを確認しました。CIが使用しているものは次のとおりです。
#^(.+)/(/^[a-zA-Z\#]$/)$#
渡された文字列全体を 1 つの大きなパターンに変換しています。
解決済み:
CI が 1 つの大きなパターンを作成しようとしていることを理解した後、パターンを最初から書き直し、(:any) を削除しました。また、# を + に置き換えました。これが私の最終的な解決策です:
$route['(^(.+)/([a-zA-Z\+]$))'] = "collection/view/$2/alpha/$3";
よりエレガントなパターンをお持ちの方は、お気軽に投稿してください。ありがとう!