标签: php

Deprecated: Function ereg_replace() is deprecated

Deprecated: Function ereg_replace() is deprecated

在php5.3.0后的版本,取消了对ereg函数的支持,惹得若干程序需要改动,譬如我安装的zen-card1.3.8,颇不方便。
错误:Deprecated: Function ereg() is deprecated in ……

解决方法一:退回去用php5.2。(众人皆赞道:果是好法子!)

解决方法二:继续用php5.3,但是修改devel/devel.modul的460行:if ($errno & (E_ALL ^ E_NOTICE)) {改为if ($errno & (E_ALL & ~E_NOTICE & ~E_DEPRECATED)) {把丫deprecated错误给忽略掉。(众人皆又赞道:果……果……果是好法子!)

解决方法三:动程序鸟,把ereg换成preg_match,ereg_replace也需得换成preg_replace。只得注意的是ereg(“^[0-9]”)    需修改成   preg_match(“/^[0-9]/”) 无敌//必须加,哈哈。(众人皆俯首赞道:王道也!)

hp中preg_replace和ereg_replace函数用法区别:
1) preg_replace:
语法:
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, intlimit])
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit个匹配,如果省略 limit 或者其值为-1,则所有的匹配项都会被替换。
replacement 可以包含 \n 形式或(自PHP 4.0.4起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从0 到99,其中 \0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从1 开始)以取得子模式的数目。
对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用熟悉的 \1 符号来表示逆向引用。举例说 \11,将会使 preg_replace() 搞不清楚是想要一个 \1 的逆向引用后面跟着一个数字 1 还是一个 \11 的逆向引用。本例中的解决方法是使用 \${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。
此函数主要是用来进行正则匹配的mixedpattern必须是行为””这样的形式
2) ereg_replace
语法:
string ereg_replace (string pattern, string replacement, string string)
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)
如果 pattern 包含有括号内的子串,则 replacement 可以包含形如 \digit 的子串,这些子串将被替换为数字表示的的第几个括号内的子串;\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。
如果未在 string 中找到匹配项,则 string 将原样返回。
此函数主要是用来进行字符匹配的,不能带有“//”

例子:
<?php
//ereg_replace的例子.
$num = ‘4’;
$string = “This string has four words.”;
$string = ereg_replace(‘four’,$num, $string);
echo $string;
//preg_replace的例子.
$num = ‘4’;
$string = “This string has four words.”;
$string = preg_replace(‘/four/’,$num, $string);
echo $string;
?>
输出的结果是一致的。
<?php
//ereg_replace的例子.
$string = “This is a test”;
echo ereg_replace (” is”, ” was”, $string);
echo ereg_replace (“( )is”, “\1was”, $string);
echo ereg_replace (“(( )is)”, “\2was”, $string);
//preg_replace的例子.
$string = “This is a test”;
echo preg_replace (“/ is/”, ” was”, $string);
echo preg_replace (“/( )is/”, “\1was”, $string);
echo preg_replace (“/(( )is)/”, “\2was”, $string);
?>
输出结果一致。
<?php
$date=’08/27/2009′;
echo preg_replace(“/(\d+)\/(\d+)\/(\d+)/”,”\2/\1/\3″,$date);echo'<br>’;
print ereg_replace(“([0-9]+)/([0-9]+)/([0-9]+)”,”\2/\1/\3″,$date);
?>
输出结果一致。
下面单独说一下preg_replace这个函数:
preg_replace() 的每个参数(除了 limit)都可以是一个数组。如果 pattern 和 replacement 都是数组,将以其键名在数组中出现的顺序来进行处理。这不一定和索引的数字顺序相同。如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换,应该在调用 preg_replace() 之前用 ksort() 对数组进行排序。
<?php
$string = “The quick brown foxjumped over the lazy dog.”;
$patterns[0] = “/quick/”;
$patterns[1] = “/brown/”;
$patterns[2] = “/fox/”;
$replacements[2] = “bear”;
$replacements[1] = “black”;
$replacements[0] = “slow”;
print preg_replace($patterns, $replacements, $string);
ksort($patterns);
ksort($replacements);
print preg_replace($patterns, $replacements, $string);
?>

php 时间运算及数据库中取出日期使用注意(转)

php 里经常要对时间进行处理,网上关于时间函数运算的教程很多,本文略微整理一下:

echo date(‘Y-m-d’,strtotime(‘+1 d’,strtotime(‘2009-07-08′)));//日期天数相加函数

echo date(“Y-m-d”,’1246982400’);
echo ‘<br>’;
echo date(“Y-m-d”,’1279123200′);
die();

$d   =   “2009-07-08 10:19:00”;
echo   date(“Y-m-d”,strtotime(“$d   +1   day”));   //日期天数相加函数

function dateToTime($d)//把日期转换成时间堆截
{
$year=((int)substr(“$d”,0,4));//取得年份

$month=((int)substr(“$d”,5,2));//取得月份

$day=((int)substr(“$d”,8,2));//取得几号

return mktime(0,0,0,$month,$day,$year);
}

/*

strtotime

这个函数非常重要,从数据库进取出的日期,一般为字符串,必需经过此函数处理后,才能使用 date 这类函数对时间进行格式化。

下面函数计算两日期之着

*/

$Date_1=”2009-07-08″;

echo $Date_1+1;

$Date_2=”2009-06-08″;
$Date_List_a1=explode(“-“,$Date_1);

$Date_List_a2=explode(“-“,$Date_2);

$d1=mktime(0,0,0,$Date_List_a1[1],$Date_List_a1[2],$Date_List_a1[0]);

$d2=mktime(0,0,0,$Date_List_a2[1],$Date_List_a2[2],$Date_List_a2[0]);

$Days=round(($d1-$d2)/3600/24);

echo  “两日期之前相差有$Days 天”;

关于时间值的数据库存储-time()

PHP的time方法

我想有很多人都在用date()函数来获取时间,然后在数据库中,使用datetime格式来储存,这个方法不是说比用time()函数差,只不过在PHP中使用time函数获得的是Unix时间戳,这个是很精确的时间,关于Unix时间戳,大概是这个意思,从1970年0时0分0秒开始到现在的秒数.使用它来获得的是一个INT值,储存在数据库里只要使用INT格式就可以了,方便数据库进行排序,搜索,而且比datetime格式更节省数据库空间。所以我建议大家使用time函数来获得时间。
那么如何来使用time函数呢.下面我给个例子大家就会明白了
<?php
$time=time()
/* 下面是显示怎么输出,在实际使用当中,我们只要把上面获得的时间储存在数据库中,需要显示的时候在用下面的方法来使用*/
$time=date(“y-m-d H:i:s”,$time);
//然后我们把$time当成date()函数的参数用”Y-m-d
//H:i:S”的格式来输出,这样比较方便我们查看
echo $time;
//输出的结果应该是类似2006-11-22 22:42:23的时间格式
?>

现在大家知道如何使用time()来储存时间了吧 阅读详细 »

linux删除apache、mysql、php的方法

安装面板之前,我们需要做很多工作,为的就是创造一个干净的系统。

首先需要判断,以php为例。
执行rpm -q php,如果返回php版本,刚是rpm安装;不返回php版本则是二进制安装。
对于rpm安装执行rpm -e php –nodeps 即可彻底系统自带的php;对于二进制安装直接目录就可以。
apache、mysql用同样的方法即可删除。

安装方法

只安装一个软件时
-y install httpd

安装多个相类似的软件时
yum -y install httpd*

安装多个非类似软件时
yum -y install httpd php php-gd mysql

只卸载一个软件时
yum -y remove httpd
卸载多个相类似的软件时
yum -y remove httpd*
卸载多个非类似软件时
yum -y remove httpd php php-gd mysql

另外还有一个非常实用的用法
假如我要执行iostat这个命令来查看CPU与存储设备状态,可是执行却发现没有这个命令
于是执行yum install iostat,结果说找不到该软件,使用下面的办法可以解决
yum search iostat就能查到和iostat相关的安装包了,
另外想安装一个程序,只记得一部分名称,也可以用这个办法来实现安装
yum search png |grep png
就能找到我们想安装的libpng这个名称

最后,最好在运行linux面板安装之前运行一下下面的命令。
yum -y remove httpd
yum -y install file
yum -y install patch
yum -y update