私はDrupalモジュールを作成していますが、この質問はDrupal固有ではありません。mysqlクエリで逆ワイルドカードを行う効率的な方法は?
Drupalにはmenu_router
という名前のテーブルがあり、ここで人間にやさしいURLをコンテンツをプルアップできる実際のURLに関連付けます。たとえば:
+--------------------------------------------------------+
| admin/config/media/image-styles/edit/%/add/% |
| admin/config/media/image-styles/edit/%/effects/% |
| admin/structure/types/manage/%/comment/fields/%/delete |
| admin/structure/types/manage/%/comment/fields/%/edit |
+--------------------------------------------------------+
私は、任意のURLを持っていると私はそれが実際にサイト上で有効なURLにマップすることを確認します。しかし、上記のようにワイルドカード文字列がすでに列の値として存在し、検索条件が一致するため、ワイルドカードクエリを簡単に実行できません。
たとえば、'arbitrary/url/string/'
は、DrupalがURLを処理する方法に従って'arbitary/%/string'
と一致します。
任意の文字列がワイルドカードのDrupal形式のURLのいずれかと一致するかどうかを照会できる効率的な方法は何ですか?
私はあなたが探しているすべての文字列に一致する "マスター" -regexpがあるとは思わない。おそらく、各文字列に対して異なる正規表現を作成する必要があります。 – alfasin