页面最大过期时间
- php.ini
//在php.ini 中设置,如30秒
max_execution_time = 30
- [代码]ini_set()函数
//虚拟主机,且服务器允许使用ini_set()函数,可在PHP代码中设置:
ini_set('max_execution_time',864000);
//在php.ini 中设置,如30秒
max_execution_time = 30
//虚拟主机,且服务器允许使用ini_set()函数,可在PHP代码中设置:
ini_set('max_execution_time',864000);
ini_set("display_errors",1);
error_reporting(E_ALL);
//检测字符串相同的部分
function check_str($str1,$str2){
static $str_length_flag=1000000000;
static $flag=0;
$tmp_str1=$str1;$tmp_str2=$str2;
$strlen=utf8_strlen($str1);
$str_temp='';
for ($i=0; $i <$strlen ; $i++) {
for ($j=utf8_strlen($str_temp)+1; $j <=$strlen-$i ; $j++)
{
//$j=$str_temp?utf8_strlen($str_temp):$j;
$str_1=mb_substr($str1, $i, $j, 'utf-8');
$str_start=strpos($str2, $str_1);
if (!($str_start===false)) {
if(strlen($str_1)>strlen($str_temp)){
$str_temp=$str_1;
$ex_info=array(
'str1_left'=>$i,
'str1_right'=>$j,
'str2_left'=>$str_start,
'str2_right'=>$str_start+strlen($str_temp),
);
}
if(utf8_strlen($str_1)>=utf8_strlen($str1)||utf8_strlen($str_1)>$str_length_flag){
break 2;
}
}else{
break;
}
}
}
if (!$flag) {
$str_length_flag=utf8_strlen($str_temp);
$flag=1;
}
$res_arr=array();
if (isset($ex_info)) {
$str1_left_str=mb_substr($str1, 0, $ex_info['str1_left'], 'utf-8');
$str2_left_str=substr($str2,0,$ex_info['str2_left']);
if ($str1_left_str&&$str2_left_str) {
$strleft=check_str($str1_left_str,$str2_left_str);
if ($strleft) {
$res_arr=array_merge($res_arr,$strleft);
}
}
if ($str_temp)
{
$res_arr=array_merge($res_arr,array($str_temp));
}
$str1_right_str=mb_substr($str1, $ex_info['str1_left']+$ex_info['str1_right'], utf8_strlen($str1), 'utf-8');
$str2_right_str=substr($str2,$ex_info['str2_right'],strlen($str2));
if ($str1_right_str&&$str2_right_str)
{
$strright=check_str($str1_right_str,$str2_right_str);
if ($strright) {
$res_arr=array_merge($res_arr,$strright);
}
}
}
return $res_arr;
}
//改变样式
function str_color($str1,$str2,$arr){
foreach ($arr as $key => $value) {
$start1=strpos($str1,$value);
$str1=substr_replace($str1, '---$'.$key.'$', $start1,strlen($value));
$start2=strpos($str2,$value);
$str2=substr_replace($str2, '---', $start2,strlen($value));
}
$arr1_temp=explode('---', $str1);
$arr2_temp=explode('---', $str2);
$temp_arr=array();
foreach ($arr1_temp as $key => $value) {
$check=preg_replace('/^\$(\d+)\$$/', '', $value);
if (strlen($check)&&strlen($arr2_temp[$key])) {
$temp_arr[]='<del>'.$arr2_temp[$key].'</del>'.'<ins color="greed">'.$value.'</ins>';//修改
}elseif(strlen($check)){
$temp_arr[]='<ins color="greed">'.$value.'</ins>';//新加的
}elseif(strlen($arr2_temp[$key])){
$temp_arr[]='<del>'.$value.$arr2_temp[$key].'</del>';//删除的
}else {
$temp_arr[]=$value;
}
}
$temp_arr=preg_replace_callback('/(.*)(\$(\d+)\$)(.*)/', function ($matchs) use($arr){
return $arr[$matchs[3]].$matchs[1].$matchs[4];
}, $temp_arr);
return implode('', $temp_arr);
}
$str1='我叫小明';
$str2='我的名字是小明';
echo "
<style>
ins{
text-decoration: none;
padding: 3px 0;
background:
#EAF0DD;
color: #5B7918;
}
del{text-decoration: line-through;
padding: 3px 0;
background: #f5dfdf;
color: #ac1414;}
</style>
";
echo(str_color($str2,$str1,check_str($str1,$str2)));
一、常见字符串和文件操作
1、PHP翻转中文字符串
function reverse($str){
$r = array();
for($i=0; $i<mb_strlen($str); $i++){
$r[] = mb_substr($str, $i, 1, 'UTF-8');
}
return implode(array_reverse($r));
}
echo reverse('www.phpha.com天涯PHP博客');
//结果:'客博PHP涯天moc.ahphp.wwww'
2、PHP计算URL的文件后缀名
function getext($url){
$data = parse_url($url);
$path = $data['path'];
$info = pathinfo($path);
return $info['extension'];
}
echo getext('http://blog.phpha.com/archives/1670.html?id=1670');
//结果:'html'
3、PHP计算两个文件的相对路径
function getrpath($path, $conpath){
$pathArr = explode('/', $path);
$conpathArr = explode('/', $conpath);
$dismatchlen = 0;
for($i=0; $i<count($pathArr); $i++){
if($conpathArr[$i] != $pathArr[$i]){
$dismatchlen = count($pathArr) - $i;
$arrleft = array_slice($pathArr, $i);
break;
}
}
return str_repeat('../', $dismatchlen).implode('/', $arrleft);
}
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/5.php';
echo getrpath($a, $b);
//结果:'../../../c/d/e.php'
4、PHP遍历目录下的所有文件和文件夹
function finddir($dir){
$files = array();
if(is_dir($dir)){
if($handle = opendir($dir)){
while(($file = readdir($handle)) !== false){
if($file != '.' && $file != '..'){
if(is_dir(rtrim($dir, '/').'/'.$file)){
$files[$file] = finddir(rtrim($dir, '/').'/'.$file);
}else{
$files[] = rtrim($dir, '/').'/'.$file;
}
}
}
closedir($handle);
}
}
return $files;
}
print_r(finddir('F:/Golang/src'));
//结果:
Array
(
[0] => F:/Golang/src/hello.go
[1] => F:/Golang/src/src.exe
[test] => Array
(
[0] => F:/Golang/src/test/sss.txt
)
)
二、常见算法的实现
1、冒泡排序
function bubble_sort($arr) {
$n=count($arr);
for($i=0;$i<$n-1;$i++){
for($j=$i+1;$j<$n;$j++) {
if($arr[$j]<$arr[$i]) {
$temp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$temp;
}
}
}
return $arr;
}
2、归并排序
function Merge(&$arr, $left, $mid, $right) {
$i = $left;
$j = $mid + 1;
$k = 0;
$temp = array();
while ($i <= $mid && $j <= $right)
{
if ($arr[$i] <= $arr[$j])
$temp[$k++] = $arr[$i++];
else
$temp[$k++] = $arr[$j++];
}
while ($i <= $mid)
$temp[$k++] = $arr[$i++];
while ($j <= $right)
$temp[$k++] = $arr[$j++];
for ($i = $left, $j = 0; $i <= $right; $i++, $j++)
$arr[$i] = $temp[$j];
}
function MergeSort(&$arr, $left, $right)
{
if ($left < $right)
{
$mid = floor(($left + $right) / 2);
MergeSort($arr, $left, $mid);
MergeSort($arr, $mid + 1, $right);
Merge($arr, $left, $mid, $right);
}
}
3、二分查找-递归
function bin_search($arr,$low,$high,$value) {
if($low>$high)
return false;
else {
$mid=floor(($low+$high)/2);
if($value==$arr[$mid])
return $mid;
elseif($value<$arr[$mid])
return bin_search($arr,$low,$mid-1,$value);
else
return bin_search($arr,$mid+1,$high,$value);
}
}
4、二分查找-非递归
function bin_search($arr,$low,$high,$value) {
while($low<=$high) {
$mid=floor(($low+$high)/2);
if($value==$arr[$mid])
return $mid;
elseif($value<$arr[$mid])
$high=$mid-1;
else
$low=$mid+1;
}
return false;
}
5、快速排序
function quick_sort($arr) {
$n=count($arr);
if($n<=1)
return $arr;
$key=$arr[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<$n;$i++) {
if($arr[$i]<=$key)
$left_arr[]=$arr[$i];
else
$right_arr[]=$arr[$i];
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
6、选择排序
function select_sort($arr) {
$n=count($arr);
for($i=0;$i<$n;$i++) {
$k=$i;
for($j=$i+1;$j<$n;$j++) {
if($arr[$j]<$arr[$k])
$k=$j;
}
if($k!=$i) {
$temp=$arr[$i];
$arr[$i]=$arr[$k];
$arr[$k]=$temp;
}
}
return $arr;
}
7、插入排序
function insertSort($arr) {
$n=count($arr);
for($i=1;$i<$n;$i++) {
$tmp=$arr[$i];
$j=$i-1;
while($arr[$j]>$tmp) {
$arr[$j+1]=$arr[$j];
$arr[$j]=$tmp;
$j--;
if($j<0)
break;
}
}
return $arr;
}
转载自:http://blog.92fenxiang.com/articles/1429003471
最近在写一些代码的时候,发现在公司和住的地方,同步很不方便,老是用U盘很麻烦,于是就想使用下git,于是开始看看git怎么用,遇到的一些问题,记录下
1.安装git,百度一下就可以了
2.配置下用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
3.初始化仓库,在某个目录下,初始化之后就可以用git管理目录下的文件了
$ git init
Initialized empty Git repository in f:/GitTest/.git/
4.新加文件并提交到版本库
$ echo "hahahah" > test.txt
$ git add test.txt
$ git commit -a -m "1"
5.删除文件
$ git rm test.txt
rm 'test.txt'
$ git commit -a -m "2 rm"
[master 47e19d1] 2 rm
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
6.远程服务器,丢弃本地所有修改,完全和远程一样(本地和远程的不一样导致的错误,例如下面,这个本地的版本库我在添加远程之前,是有做过一些操作的,然后把远程pull到本地的时候,就报错了,如果本地的东西可以放弃掉不要的话,可以使用下面的策略)
$ git remote add origin git@github.com:scchary/Test1.git
$ git pull origin
warning: no common commits
remote: Counting objects: 81, done.
remote: Compressing objects: 100% (44/44), done.
remote: Total 81 (delta 7), reused 79 (delta 5), pack-reused 0
Unpacking objects: 100% (81/81), done.
From github.com:scchary/Test1
* [new branch] master -> origin/master
You asked to pull from the remote 'origin', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
$ git fetch origin
$ git reset --hard origin/master
7.本地版本回溯之后再push到远程的时候报错,
$ echo "test" >> t3.txt
$ git add t3.txt
$ git commit -a -m "test add file"
[master 4428651] test add file
warning: LF will be replaced by CRLF in t3.txt.
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
create mode 100644 t3.txt
$ git push origin master #新创建了一个文件,并提交push到远程,这是远程就是在新的版本库了
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 263 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:scchary/Test1.git
b3677f6..4428651 master -> master
$ git reflog
4428651 HEAD@{0}: commit: test add file
b3677f6 HEAD@{1}: commit: test
2620363 HEAD@{2}: reset: moving to origin/master
47e19d1 HEAD@{3}: commit: 2 rm
821154b HEAD@{4}: commit (initial): 1
$ git reset --hard b3677f6 #版本回溯
HEAD is now at b3677f6 test
$ ls
t1.txt t2.txt test.txt testA.txt #添加的t3文件确实不见了
$ git push origin master #push到远程的时候报错,因为现在本地比远程的版本旧,所以要先pull
To git@github.com:scchary/Test1.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:scchary/Test1.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
#如果是想把远程上面的也回溯到现在这个版本,可以直接用下面的命令
$ git push -f origin master
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:scchary/Test1.git
+ 4428651...b3677f6 master -> master (forced update)
8.忽略掉已经添加版本库的文件,git可以在.gitignore文件里面设置忽略的文件,比如
$ cat .gitignore
test.txt
上面就把test.txt文件夹忽略掉了,之后这个文件的更改git是不会管的,但是这个如果在设置.gitignore之前,test.txt就已经加入到了git,那么这个设置是无效的,可以利用这个命令来设置,
jin@JIN /f/GitTest (master)
$ git rm --cached test.txt