我这样保存用户网址

王志勇 发表于 2009年03月18日 11:25

例如用户发送的网址是http://www.auiou.com/,将它转化为www.auiou.com,去掉http://,以及最后的/。以PHP为例,可以这样做:

<?$url=stripslashes($_POST["url"]);
$j=str_replace("/", "", $url);
$i=strlen($url);
if ($i-strlen($j)==3 && substr($url, $i-1)=="/") $url=substr($url, 0, $i-1);
if (strtolower(substr($url, 0, 7))=="http://") $url=substr($url, 7);?>

运行结果:

  1. 如果$url为http://www.auiou.com/,或者http://www.auiou.com,或者www.auiou.com,运行结果都是www.auiou.com。
  2. 如果$url为http://www.auiou.com/abc,运行结果是www.auiou.com/abc。
  3. 如果$url为http://www.auiou.com/abc/,运行结果是www.auiou.com/abc/。

说明:

  1. 第2行的$j变量,将"/"全部替换删除掉,第4行的strlen($j),可以统计出删除"/"后,如果strlen($url)与strlen($j)正好相差3个"/",并且网址的最后是以"/"结尾,则去掉http://www.auiou.com/最后的一个斜杠。
  2. 最后一行,去掉http://这7个字符。
  3. 如果用户的网址是https://的形式,将不做任何替换。
  4. 如果是如http://www.auiou.com/blog或http://www.auiou.com/blog/的形式,只去掉http://这7个字符。

5条评论:
1   Goberl 2009-03-21 08:38
很规范啊,学习了。
2   幻想曲 2009-03-22 12:55
用Parse_url可能会更好一点。
<?php
$urls=array("http://www.aaa.com/","http://www.auiou.com","http://www.auiou.com/abc/");
foreach($urls as $item)
{
$array = parse_url($item);
$url = $array['host'];
if($array['path']!="/") $url.=$array['path'];
echo $url.'<br />';
}
?>
输出:
www.aaa.com
www.auiou.com
www.auiou.com/abc/
3   自由勇 2009-03-22 13:39
谢谢!很好。:)
<?$url="http://www.auiou.com/abc/";
$ur2=parse_url($url);
$ur3=$ur2['host'];
$ur4=$ur2['path'];
if ($ur4!="/") $ur3.=$ur4;?>
<?=$ur3?>

同样的输出结果:
www.aaa.com
www.auiou.com
www.auiou.com/abc/

4   自由勇 2009-03-22 13:57
有query的网址:
<?$url="http://www.auiou.com/abc/?id=450";
$ur2=parse_url($url);
$ur3=$ur2['host'];
$ur4=$ur2['path'];
$ur5=$ur2['query'];
if ($ur4!="/") $ur3.=$ur4;
if ($ur5) $ur3.="?".$ur5;?>
<?=$ur3?>

输出结果:
www.auiou.com/abc/?id=450

5   自由勇 2009-10-12 21:54
Trackback来自 《博客防spam/陌生人恶意留言另一方案

这里在$url左右两边各加了一个“|”的符号,就可以准确判断。其它列表的建立和判断方法,都是一样的。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写