假设我有$ _POST [' url'] =' http://myexamplesite.com/images/image.jpg&#39 ;; 如果此URL存在于数据库中,我怎样才能得到正确的结果,但看起来像: http://www.myexamplesite.com/images/image.jpg
如果我这样做:
$q='select id from products where url LIKE "%'.$_POST['url'].'%"';
这不会返回始终正确的结果。什么是正确的方法? 感谢
答案 0 :(得分: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 :(得分:0)
无论
1)标准化数据库中的URL(如果它们都在您自己的站点上)
或
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';