2016-06-29 159 views
3

可以說我有$ _POST ['url'] ='http://myexamplesite.com/images/image.jpg'; 我怎樣才能得到正確的結果,如果在數據庫中存在該網址,但看起來像: http://www.myexamplesite.com/images/image.jpgMysql查詢檢查數據庫中是否存在url

如果我這樣做:

$q='select id from products where url LIKE "%'.$_POST['url'].'%"'; 

這將不會返回總是正確的結果。什麼是正確的方法? 感謝

+0

可能你正在尋找:http://stackoverflow.com/questions/9364242/how-to-remove-http-www-and-slash-from-url-in-php – mitkosoft

+0

很明顯如何比較都在PHP中,但如何在MySQL查詢中做到這一點? – Europeuser

+0

所以你只需要一個MySQL解決方案? – mitkosoft

回答

2

如果您需要純粹的SQL解決方案,您可以使用SUBSTRING_INDEX()表示:

SELECT * FROM products WHERE 
SUBSTRING_INDEX(SUBSTRING_INDEX(url, 'http://', -1), 'www.',-1) = 
SUBSTRING_INDEX(SUBSTRING_INDEX('".$_POST['url']."', 'http://', -1), 'www.',-1) 

這將從兩個字符串中刪除http://www.,並將比較其餘字符串。

+1

做得好的男人,這正是想要做的,謝謝! – Europeuser

1

要麼

1)規範數據庫中的網址,如果他們都在自己的網站

2)Remove the http://, http://, and www. from search URL像這樣:

function pure_url($url) { 
    if (substr($url, 0, 7) == 'http://') { 
     $url = substr($url, 7); 
    } 
    if (substr($url, 0, 8) == 'https://') { 
     $url = substr($url, 8); 
    } 
    if (substr($url, 0, 6) == 'ftp://') { 
     $url = substr($url, 6); 
    } 
    if (substr($url, 0, 4) == 'www.') { 
     $url = substr($url, 4); 
    } 
    return $url; 
} 

$url = pure_url('http://www.myexamplesite.com/images/image.jpg'); 
// $url = 'myexamplesite.com/images/image.jpg'; 
+0

'ftp'協議呢? – tektiv

+0

if(substr($ url,0,4)=='ftp。'){url = substr($ url,4); } – Swolschblauw

+0

傑米,謝謝,但這不能解決問題,因爲第一個url-s是每次不同的網站,第二個$ _POST可能看起來像'http://www.myexamplesite.com/images/image.jpg',但在數據庫是'http://myexamplesite.com/images/image.jpg'和 – Europeuser

相關問題