PHP-如果变量包含“0”,则跳过strtolower()的函数;维基百科.org“;

PHP-如果变量包含“0”,则跳过strtolower()的函数;维基百科.org“;,php,string,Php,String,我的网站允许用户在数据库中输入URL。我使用代码“$site=strtolower($site);”将所有这些URL的大小写都改为小写 然而,我刚刚意识到维基百科URL是区分大小写的,所以我想避免在维基百科URL上使用“$site=strtolower($site);”,所有这些URL都包含“Wikipedia.org” 如果$site包含“wikipedia.org”,我如何编写一个跳过步骤“$site=strtolower($site);”的函数 提前感谢, John将告诉您一个字符串是否存

我的网站允许用户在数据库中输入URL。我使用代码“$site=strtolower($site);”将所有这些URL的大小写都改为小写

然而,我刚刚意识到维基百科URL是区分大小写的,所以我想避免在维基百科URL上使用“$site=strtolower($site);”,所有这些URL都包含“Wikipedia.org”

如果$site包含“wikipedia.org”,我如何编写一个跳过步骤“$site=strtolower($site);”的函数

提前感谢,

John将告诉您一个字符串是否存在于另一个字符串中的任何一点。检查一下,如果没有,strtolower()将是安全的

if(stristr($site, 'wikipedia.org') === FALSE){
 echo "doesn't contain wikipedia.org";
}else{
 echo "wikipedia.org!";
}
更新


只是关于在数据库中存储URL的简短说明。服务器上的目录、文件、用户名、密码或参数包含大写字符的情况并不少见。尽管解释取决于底层操作系统、Web服务器和代码,但我强烈建议不要将strtolower()用于域和协议之外的任何内容

所有*nix服务器上的URL都区分大小写。Windows服务器上的某些URL也区分大小写

编辑:域名不区分大小写(实际上,客户端将其转换为小写)

注意:按规范划分的片段应该区分大小写,但并非在所有客户机上都是这样实现的

这是一个非常糟糕的想法去做你想做的事情。最好的方法是将域名小写

编辑2:根据您的要求,这里有一个函数可以正确地将给定URL小写(仅限scheme和domain):

[mixed]urltolower($url)

将URL小写。失败时返回FALSE。成功时返回小写URL

例如:

echo urltolower('HTTP://en.WikiPedia.org/wiki/PHP');
//echo's http://en.wikipedia.org/wiki/PHP

这是个坏主意。URL通常允许区分大小写,所以为什么要丢弃信息呢?如果您这样做,您将不得不在异常之后添加异常。

创建一个简单的If条件可以解决您的问题。
为您的需求设置条件

大多数URL都区分大小写,但windows服务器上的URL例外。首先我认为这是个坏主意。将URL存储在其原始大小写中有什么问题?您确实意识到,每个URL的路径都区分大小写,如果您的大小写错误,大多数服务器都会做正确的事情,这只是一个机会。比Wikipedia更多的站点都有区分大小写的URL。我猜你会继续在策略上遇到麻烦。@Matthew:很有意思-谢谢你指出这一点。为什么不修改你的理由使它们小写?很好,我不知道有一个“stristr”函数。在我看来,除了Wikipedia,所有URL都不区分大小写。尝试键入NYTIMES.com,您将被重定向到NYTIMES.com。所有域都不区分大小写-并非所有URL都不区分大小写。但是,域也不区分大小写(转到)。路径不是。我想我的站点托管在Unix服务器上,当我在地址栏中键入所有大写字母时,它会以小写字母(至少在Google Chrome上是这样)。@John:只有当您的服务器配置为使用mod_spel或等效名称时才会发生这种情况,这是不常见的。@John:域名不区分大小写。假设你的域名是example.com,你有一个名为test.txt的文件。EXAMPLE.COM/test.txt将起作用,EXAMPLE.COM/test.txt将不起作用,EXAMPLE.COM/Text.txt将不起作用,EXAMPLE.COM/test.txt将不起作用。你让我思考。我可能干脆干脆把花盆都扔了。我只是想避免数据库中的冗余条目。也就是说,我不想让NYtimes.com和NYtimes.com都在其中。@John:那就把域名小写吧。
function urltolower($url) {
    $parts = @parse_url($url);
    if($parts === FALSE) return FALSE;
    $url = '';

    if(!empty($parts['scheme'])) $url .= strtolower($parts['scheme']) . (($parts['scheme'] == 'file') ? ':///' : '://');
    if(!empty($parts['user'])) $url .= $parts['user'] . ((!empty($parts['pass'])) ? ':' . $parts['pass'] : '') . '@';
    if(!empty($parts['host'])) $url .= strtolower($parts['host']);
    if(!empty($parts['port'])) $url .= ':' . $parts['port'];
    if(!empty($parts['path'])) $url .= $parts['path'];
    if(!empty($parts['query'])) $url .= '?' . $parts['query'];
    if(!empty($parts['fragment'])) $url .= '#' . $parts['fragment'];

    return $url;
}
echo urltolower('HTTP://en.WikiPedia.org/wiki/PHP');
//echo's http://en.wikipedia.org/wiki/PHP