存档

‘PHP’ 分类的存档

URL映射 php 实现

2011年10月20日 没有评论

1、大家来说说URL映射吧
一般url映射有两种方式,一种是通过mod_rewrite实现,这种网上教材很多我也不多说了。另外一种是在程序中模拟,比如类似zend Framework中的那种方式/index.php/controller/action/var1/value1/var2/value2/。这里方 式其实最主要是通过一个统一的输入接口,然后对url进行解析,最后转发到相应的controller中的module。

我这里写了两个简单函数来模拟。
第一个函数主要是进行地址解析,把类似/index.php/controller/action/var1/value1/var2/value2/的地址解析出来,一般来说要解析成三部分:controller,module,params。


<?
/**
*对url路由进行简单的解析,支持对/path/to/site/index.php/module/action/parm/value
* /path/to/site/index.php?/module/action/parm/value和
* /path/to/site/?/module/action/parm/value三种形式的处理
*@param:null
*@return:router array
*/
function url_router(){
$path=strip_tags($_SERVER['REQUEST_URI']);
$strpos=strpos($path,'.php');
if($strpos){
$path=substr($path,$strpos+4);
}else{
if(empty($_SERVER['QUERY_STRING'])){
$strpos=strpos($path,'?');
if($strpos){
$path=substr($path,$strpos+1);
}else{
$path='';
}
}else{
$path=$_SERVER['QUERY_STRING'];
}
}
//统一化$path的格式,如果$path的第一个字符为/则去掉
if($path[0]=='/'){
$path=substr($path,1);
}
//解析,并且路由
if(!empty($path)){
$path=explode('/',$path);
$router['controller']=$path[0];
$router['action']=(!empty($path[1]))?$path[1]:'index';
//print_r($path);
for($i=2;$i<sizeof($path);$i=$i+2){
$params[$path[$i]]=(isset($path[$i+1]))?$path[$i+1]:'';
}
$router['params']=$params;
}else{
//默认路由信息
$router['controller']='index';
$router['action']='index';
$router['params']=array();
}
return $router;
}
?>

这里就完成主要的url解析功能,然后是转发映射,下面这个函数实现(注意这个函数的实现是结合了我自己的架构,所以你采用的话需要相应的修改,当然你的MVC如果类似zend Framework,那应该要该的不多。)

<?
function url_dispatch($router,$app_path='/app/controllers/')
{
require_once(SERVER_PATH.'/libs/controller.class.php');
$controller=$router['controller'].'Controller';
//echo SERVER_PATH.$app_path.$controller.'.class.php';
if(!file_exists(SERVER_PATH.$app_path.$controller.'.class.php'))die('缺少必要的类!');
require_once(SERVER_PATH.$app_path.$controller.'.class.php');
$controller=new $controller();
$controller->_setParam($router['params']);
$controller->{$router['action'].'Action'}();
return true;
}
?>

分类: PHP 标签:

PHP分页技术的代码和示例

2011年8月17日 没有评论

分 页是目前在显示大量结果时所采用的最好的方式。有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据。在互联网上,分​页是一般用于搜索结果 或是浏览全部信息(比如:一个论坛主题)。几乎在每一个Web应用程序都需要划分返回的数据,并按页显示。下面的这个列表给出的代码可以让你的开发很有帮 助。学习这些代码,对于初学者也很有帮助 。

1) 使用Ajax分页

下面这个示例使用了jQuery + PHP。 Demo link

 

2)MySql 分页

 

数据库的分页处理。

3)Facebook/Twitter 风格的分页

4)Php & MySql 分页

5) 分页风格

 

一个简单的教程教你如何用CSS定义不同风格的分页。

6)PHP 分页类

 

一个PHP的分页类

7)Easy Pagination

这是一个PHP库,可以让你更容易的做分页。

8 )基本分页

 

一个很不错简单易懂的分页教程。

9)Php Page

一个简单的PHP的教程

10)perfect-php-pagination

 

也是一个分页教程。

分类: PHP 标签:

php删除文件夹及其文件夹下所有文件

2011年2月28日 没有评论

function deldir($dir) {
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!=”.” && $file!=”..”) {
$fullpath=$dir.”/”.$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}

closedir($dh);

if(rmdir($dir)) {
return true;
} else {
return false;
}
}

分类: PHP 标签:

php常用小知识

2010年10月11日 没有评论

页面中输出非完整结构的html时为了避免乱码,加入以下语句:
header(“Content-type: text/html; charset=utf-8″);

查询数据库时避免乱码,加入以下语句:
mysql_query(“SET NAMES UTF8″);

分类: PHP 标签:

PHP查找字符串函数strstr()

2010年8月17日 没有评论

定义和用法

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。

该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。

语法

strstr(string,search)
参数 描述
string 必需。规定被搜索的字符串。
search 必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

提示和注释

注释:该函数是二进制安全的。

注释:该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()

例子

例子 1

<?php
echo strstr("Hello world!","world");
?>

输出:

world!

例子 2

在本例中,我们将搜索 “o” 的 ASCII 值所代表的字符:

<?php
echo strstr("Hello world!",111);
?>

输出:

o world!
分类: PHP 标签: ,

PHP中回车换行的处理方法

2010年6月5日 没有评论

表单提交后写入数据之前用nl2br()函数处理;

编辑时在文本域中显示时用strip_tags()函数处理。

分类: PHP 标签: , ,

PHP去掉BR标签

2010年5月5日 没有评论

表单内输入回车后提交到数据库中会有<br />标签,如果用表单修改该记录,在文本域内<br />标签还是会显示,因此显示是需要用strip_tags()函数处理就好了:

$str=trim(strip_tags($str));
分类: PHP 标签: ,

PHP向数组中插入元素PHP array_push()与PHP array_unshift()

2010年4月24日 没有评论

array_unshift() 函数:

定义和用法

array_unshift() 函数在数组开头插入一个或多个元素。

被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。

该函数会返回数组中元素的个数。

语法

array_unshift(array,value1,value2,value3...)
参数 描述
array 必需。规定输入的数组。
value1 必需。规定插入的值。
value2 可选。规定插入的值。
value3 可选。规定插入的值。

提示和注释

注释:所有的数值键名将修改为从零开始重新计数,所有的字符串键名保持不变。

例子 1

<?php
$a=array("a"=>"Cat","b"=>"Dog");
array_unshift($a,"Horse");
print_r($a);
?>

输出:

Array ( [0] => Horse [a] => Cat [b] => Dog )

例子 2

返回键值:

<?php
$a=array("a"=>"Cat","b"=>"Dog");
print_r(array_unshift($a,"Horse"));
?>

输出:

3

例子 3

数组带有数值键:

<?php
$a=array(0=>"Cat",1=>"Dog");
array_unshift($a,"Horse");
print_r($a);
?>

输出:

Array ( [0] => Horse [1] => Cat [2] => Dog )

array_push() 函数

定义和用法

array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。 该函数等于多次调用 $array[] = $value。

语法

array_push(array,value1,value2...)
参数 描述
array 必需。规定一个数组。
value1 必需。规定要添加的值。
value2 可选。规定要添加的值。

提示和注释

注释:即使数组中有字符串键名,您添加的元素也始终是数字键。(参见例子 2)

注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。

注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。

例子 1

<?php
$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )

例子 2

带有字符串键的数组:

<?php
$a=array("a"=>"Dog","b"=>"Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird )
分类: PHP 标签: ,

php变量类型转换

2010年3月19日 没有评论

获得变量类型: gettype($var);

将变量$var1转换为string类型:settype($var1,”string”);

将变量$var1转换为int型:(int)$var1;

分类: PHP 标签:

Warning Cannot send session cookie – headers already sent…的解决方法

2010年3月7日 没有评论

1、检查是否有BOM

2、在需要用到SESSION的页面顶端加入ob_start(); session_start();

分类: PHP 标签: ,