PHP + MySQL: joker kullanarak arama

2 Cevap php

Yani, ben DB şu satırlar var:

1 | / users /

2 | / users / admin /

3 | / users / admin / *

4 | / users / admin / mike /

5 | / users / admin / steve / docs /

Giriş URL /users/admin/steve/, ve hedef DB URL maç bulmaktır.

Ben joker "*" bir şey yıldız işareti yerine gidebilirsiniz belirtir beri, doğru satır olarak 3. dönmek istiyorum. Bu ne yapmak için en etkili yöntem olacaktır?

Here's my initial thoughts, but I'm sure they could be improved upon:

  1. Tam bir URL eşleşme olup olmadığını görmek için bir sorgu yapmak
  2. Hiçbir sonuç, daha sonra (yani daha belirli URL'leri önceliklidir) ters sırada, son karakter olarak "*" ile tüm satırları almak
  3. Her satır için, (eksi "*") giriş URL eşleşirse, sonra geri
  4. Hiçbir şey bulunursa, o zaman biz SOL demektir

2 Cevap

İşte ben bunu istiyorum nasıl:

SELECT * FROM mytable AS m
WHERE <input-url> = m.urlpattern
 OR <input-url> REGEXP REPLACE(m.urlpattern, '*', '.*');

) Eşdeğer bir düzenli ifade joker içine globbing tarzı joker değiştirmektir (DEĞİŞTİR.

Ben doğru bu anlamak, böyle bir şey çalışması gerekir:

SEÇ COALESCE (

(SELECT whatever FROM your query to see if there is an exact url),
(SELECT next approximation),
'SOL'

)