php无限级分类实例三

 更新时间:2016年11月25日 15:50  点击:2147
无限分灰一般都会用到递归来实现,下面我们来看看我提供的三个无限分类的读出方法。

数据库教程


--
-- Table structure for table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catpath` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES
(1, '0', '网站首页'),
(2, '0-1', 'Linux OS'),
(3, '0-1', 'Apache服务器'),
(4, '0-1', 'MySQL数据库'),
(5, '0-1', 'PHP脚本语言'),
(6, '0-1-2', 'Linux 系统教程'),
(7, '0-1-2', 'Linux 网络技术'),
(8, '0-1-2', 'Linux 安全基础'),
(9, '0-1-2-7', 'Linux LAMP'),
(10, '0-1-3-10', 'apache Server');

php教程代码

$conn = mysql教程_connect ( 'localhost', 'root', '' );
mysql_select_db ( 'test', $conn );
mysql_query ( 'set names UTF8' );
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath";
$query = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $query ) ) {
/**
* 第一种展示方法
*/
/*$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
echo $space . $row ['name'] . '<br>';*/
/**
* 第二种展示方法
*/
$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
$option .= '<option value="' . $row ['id'] . '">' . $space . $row ['name'] . '</option>';
}
echo '<select name="opt">' . $option . '</select>';

效果

过滤链接最简单的办法就是利用php教程的strip_tags函数,如下

php过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。
如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:strip_tags(string,"<img>");
过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,

则可以这样写:

strip_tags(string,"<img><p><b>");

上面的做法不可取,因为它把所有的html都给过滤了,下面我们只要过滤连接部份。

<?php
echo preg_replace("/(?<=href=)([^>]*)(?=>)/i","#", "<a href='www.111cn.net'>你好,点这里看看</a><a href='www.111cn.net'>你好,点这里看看</a>");
?>
正则:/(?<=href=)([^>]*)(?=>)/
(?<=exp) 匹配exp后面的位置
(?=exp) 匹配exp前面的位置
此正则 匹配 在 href= 之后 “>” 之前 的 非 “>” 的所有字符
例子:<a href='www.111cn.net '>

升级一下,我们只过滤其它网站的链接保存自己网站的

 

$str ='<li><a href="http://www.111cn.net/12345s" target="_blank"> 施华洛世奇!</a></li><li><a href=http://123.com/n.php?a=luxury& target="_blank"> f乔</a></li><li><a href="http://mb.111cn.net/" target="_blank"> f衣';

$match='/<li><ashref="?http://[w.]*123.com/[w]+.php?a=*[w&=]*"?s+target="_blank">(.*)</a></li>/isu';
preg_match_all($match,$str,$arr);
echo "<pre>";
print_r($arr[0]);
echo "</pre>";

更多详细内容请查看:http://www.111cn.net/phper/php/35063.htm

开发中经常用到关于用程序 模仿用户post信息,下面我介介绍了几种方法,有需要的朋友参考一下。
# <?php教程  
# /** 
# * Socket版本 
# * 使用方法: 
# * $post_string = "app=socket&version=beta"; 
# * request_by_socket('facebook.cn','/restServer.php',$post_string); 
# */ 
# function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){  
#     $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);  
#     if (!$socket) die("$errstr($errno)");  
#      
#     fwrite($socket,"POST $remote_path HTTP/1.0");  
#     fwrite($socket,"User-Agent: Socket Example");  
#     fwrite($socket,"HOST: $remote_server");  
#     fwrite($socket,"Content-type: application/x-www-form-urlencoded");  
#     fwrite($socket,"Content-length: ".strlen($post_string)+8."");  
#     fwrite($socket,"Accept:*/*");  
#     fwrite($socket,"");  
#     fwrite($socket,"mypost=$post_string");  
#     fwrite($socket,"");  
#      
#     $header = "";  
#     while ($str = trim(fgets($socket,4096))) {  
#         $header.=$str;  
#     }  
#      
#     $data = "";  
#     while (!feof($socket)) {  
#         $data .= fgets($socket,4096);  
#     }  
#      
#     return $data;  
# }  
#  
关socket更详细教程请查看
http://www.111cn.net/phper/30/7cadb3c9195ac7d8ac9104da61a25c6e.htm

# /**  
# * Curl版本  
# * 使用方法:  
# * $post_string = "app=request&version=beta";  
# * request_by_curl('http://facebook.cn/restServer.php',$post_string);  
# */  
# function request_by_curl($remote_server,$post_string){  
#     $ch = curl_init();  
#     curl_setopt($ch,CURLOPT_URL,$remote_server);  
#     curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string);  
#     curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);  
#     curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta");  
#     $data = curl_exec($ch);  
#     curl_close($ch);  
#     return $data;  
# } 

cURL库可以简单和有效地去抓网页,您只需要运行一个脚本,然后分析一下您所抓取的网页,然后就可以以程序的方式得到您想要的数据了。无论是您想从一个链接上取部分数据,或是取一个XML文件并把其导入数据库教程,哪怕就是简单的获取网页内容,cURL是一个功能强大的PHP库。本文主要讲述如果使用这个PHP库。

curl参考文献

http://www.111cn.net/phper/18/curl-php.htm

 
# /** 
# * 其它版本 
# * 使用方法: 
# * $post_string = "app=request&version=beta"; 
# * request_by_other('http://facebook.cn/restServer.php',$post_string); 
# */ 
# function request_by_other($remote_server,$post_string){  
#     $context = array(  
#         'http'=>array( 
#             'method'=>'POST', 
#             'header'=>'Content-type: application/x-www-form-urlencoded'."". 
#                       'User-Agent : Jimmy's POST Example beta'."".  
#                       'Content-length: '.strlen($post_string)+8,  
#             'content'=>'mypost='.$post_string)  
#         );  
#     $stream_context = stream_context_create($context);  
#     $data = file_get_contents($remote_server,FALSE,$stream_context);  
#     return $data;  
# }  
#  
# ?>

file_get_contents() 函数把整个文件读入一个字符串中。

和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

参考文献
http://www.111cn.net/phper/24/f8d52eaae81ea27383375ead36ffbd4d.htm

php教程显示文章 几分钟前,几小时前,几天前发布类

文章发表时的UNIX时间戳,来转化为例如 几分钟前,几小时前,几天前 这样的提示。如微博

 这看起来更加人性化


 1 <?php
 2  class timeAgo
 3  { 
 4     static $timeagoObject;  
 5     private $rustle;
 6     private $unit;
 7    
 8      private function __construct()
 9      {
10         
11      }               
12      private function __clone(){ }
13      public static function getObject()
14      {
15          if(! (self::$timeagoObject instanceof self) )
16                 self::$timeagoObject = new timeAgo();
17              
18          return self::$timeagoObject; 
19      }
20      private function count_int($unix_C)   // main function
21      {
22          if(! (isset($unix_C) || is_numeric($unix_C)) )
23              return 'don't find parameter';
24             
25          $d = time()-$unix_C ;   // $d - unix time difference value
26          $d_int =(int)floor($d/60) ; // minimum unit -- minutes   unix/60
27         
28          $this->unit = 0 ;   // is minutes,hour or day?
29         
30          if($d_int < 60){   // minutes   in one hour  3600
31             $this->rustle = $d_int;
32             $this->unit = 1; 
33             }
34            else if($d_int < 720){  //hour    in one day  3600*12
35                  $this->rustle = floor($d_int/60);
36                  $this->unit = 2 ;
37                  }  
38               else if($d_int < 7200){  //day  in ten days  3600*12*10
39                       $this->rustle = floor($d_int/720);
40                       $this->unit = 3 ;
41                       }
42                   else{
43                       $this->rustle = $d ;
44                       $this->unit = 4 ;  
45                       }
46      }
47      public function piece_str($C)
48      {
49           $this->count_int($C);
50             
51           $u = '';
52           switch( $this->unit )
53           {
54              case 1:
55                   $u = 'minute';
56                   break;
57              case 2:
58                   $u = 'hour';
59                   break;
60              case 3:
61                   $u = 'day';
62                   break;
63              case 4:
64                   $u = '';
65                   break;
66              case 0:
67                   return 'sorry , get time is fail';    
68           }
69           if($this->unit < 4)
70           {
71           if($this->rustle > 1)
72                return (string)$this->rustle.$u.'s ago';
73           else if($this->rustle == 1)
74                  return (string)$this->rustle.$u.'ago';
75               else
76                   return 'Just now'; 
77           }
78      }
79      /*  example:   $ago = timeAgo::getObject();
80       *             echo $ago->piece_str($unix);   
81       *             // 2 days ago
82      */
83  }
84 ?>

php教程 代码运行时间查看类

//date:2011-08-05
class RunTime//页面执行时间类
{
 private $starttime;//页面开始执行时间
 private $stoptime;//页面结束执行时间
 private $spendtime;//页面执行花费时间
 function getmicrotime()//获取返回当前微秒数的浮点数
 {
  list($usec,$sec)=explode(" ",microtime());
  return ((float)$usec + (float)$sec);
 }
 function start()//页面开始执行函数,返回开始页面执行的时间
 {
  $this->starttime=$this->getmicrotime();
 }
 function end()//显示页面执行的时间
 {
  $this->stoptime=$this->getmicrotime();
  $this->spendtime=$this->stoptime-$this->starttime;
  //return round($this->spendtime,10);
 }
 function display()
 {
     //$this->end();
     echo "<p>运行时间:".round($this->spendtime,10)."秒</p>";
 }
}
/*调用方法  
$timer=new Runtime();
$timer->start(); 

$timer->end();
view sourceprint?
$timer->display();

[!--infotagslink--]

相关文章

  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • php无限分类使用concat如何实现

    一、数据库设计 -- -- Table structure for table `category` -- CREATE TABLE `category` ( `id` int(11) NOT NULL auto_increment, `catpath` varchar(255) default NULL, `name` varchar(255) default NULL...2015-11-08
  • 快速理解MySQL中主键与外键的实例教程

    主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php&#63;id=1 表示我要访问的是帖子...2015-11-24
  • Python深度学习之简单实现猫狗图像分类

    这篇文章主要介绍了Python深度学习之简单实现猫狗图像分类,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-29
  • c# 接口使用实例

    这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-17
  • yii添删改查实例

    一、数据访问对象 (DAO)YiiDAO 基于 PHP Data Objects (PDO) 构建。它是一个为众多流行的DBMS提供统一数据访问的扩展,这些 DBMS 包括MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 扩展和特定的 PDO 数据库驱动(例如...2015-11-24
  • winform树形菜单无限级分类实例

    本文介绍了“winform树形菜单无限级分类实例”,需要的朋友可以参考一下...2020-06-25
  • PHP无限分类(树形类)

    复制代码 代码如下:<?php//模拟PHP无限分类查询结果return array( array( 'id'=>1, 'pid'=>0, 'name'=>'主页' ), array( 'id'=>2, 'pid'=>0, 'name...2013-10-04
  • C#中的IEnumerable简介及简单实现实例

    这篇文章主要介绍了C#中的IEnumerable简介及简单实现实例,本文讲解了IEnumerable一些知识并给出了一个简单的实现,需要的朋友可以参考下...2020-06-25
  • C#TreeView 无限级别分类实现方法

    C#TreeView 无限级别分类实现方法...2020-06-25
  • php socket讲解与实例

    在这一章里你将了解到迷人而又让人容易糊涂的套接字(Sockets)。Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用sock...2016-11-25
  • C++内核对象封装单实例启动程序的类

    这篇文章主要介绍了利用C++内核对象封装的类,程序只能运行单个实例,可防止多次启动,大家参考使用吧...2020-04-25
  • php 中缓冲输出实例代码

    ob_start([string output_callback])- 打开输出缓冲区   所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。 ob...2016-11-25
  • Vue实例简单方法介绍

    这篇文章主要为大家详细介绍了Vue实例的一些简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
  • vue实例的选项总结

    这篇文章主要介绍了Vue实例的选项有哪些,文中讲解非常细致,代码帮助大家更好的学习,感兴趣的朋友可以了解下...2020-06-10
  • C# 委托(跨窗体操作控件)实例流程讲解

    今天研究了一下,在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托。...2020-06-25
  • thinkphp实现无限分类(使用递归)

    这篇文章主要介绍了在使用递归的情况下thinkphp实现无限分类,感兴趣的小伙伴们可以参考一下...2015-12-21