2016-06-29 12 views
3

$ _POST ['url'] = 'http://myexamplesite.com/images/image.jpg';私がしなければ http://www.myexamplesite.com/images/image.jpgデータベースにURLが存在するかどうかを確認するmysqlクエリ

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

これは常に正しい結果を返しません。この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上のすべてのある場合は、データベース内のURLを標準化)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

Jamie、ありがとうございます。しかし、最初のurl-sは毎回異なるサイトになり、2回目の$ _POSTは「http://www.myexamplesite.com/images/image.jpg」と表示されるかもしれませんが、データベース'http://myexamplesite.com/images/image.jpg'になります。 – Europeuser

関連する問題