网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#26 php技术区 » php实用函数,常看常记 » 2015-03-11 10:26:34

admin
回复: 0

好记性不如烂笔头。 

函数库,就是最重要的api. 是精通这门语句的重要组成部分。也是解决问题的最快途径。

  1.  php中对url的处理函数

  2. php 中常用的字符串函数

#27 Re: vim命令学习 » vim使用技巧 » 2015-03-10 15:04:07

第三: 使用 ; 来重复查询到内容

比如有一行内容 this is test.

这个时候光标在开头。 使用f可以用来查找行内的字符。

比如fs查到到this 中的s , 再次输入 fs 查找到 is 中的 s 。其实 使用 ; (分号就可以继续查查s)

一个示例 

比如 a+b+c+d 现在想让表达式变为  a + b + c + d

可以看到就是把每一个加号两侧添加一个空格。

使用名f+s +  <esc>

这些字符是 f+s(空格)+(空格)最后回到正常模式  

表示: 查找(f)加号(+)之后用替换(s) 空格+空格 之后回到正常模式

这里需要考虑一个问题, 点(.) 重复的是什么

比如你输入 abc 之后输入 <esc>  

这个时候按下点(.) 就会发现重复的是abc三个字母。

#28 Re: vim命令学习 » vim使用技巧 » 2015-03-10 14:32:41

第二: 高级重复

试想有这样一个问题:

你想把每一行的最后增加一个分号。

使用的命令应该是  A

这样就把光标移动到了文件的末尾。之后输入;(分号)

回到正常模式, 点击 j. 

就可以重复操作了。 

重复的内容就是 移动到行尾,加入分号。

--------------

C 删除光标到行尾的内容  <==> c$

s 表示替换一个字符,这个操作是 删除当前的字符后, 进入到插入模式。 <==> cl 

// c 是用来删除字符用的, cl 表示删除光标右边的字符, ch 删除光标左边的字符。 x 删除光标所在的字符。 cc 删除正行。

// x 删除后还是插入模式

S(大写的), ^C, dd (都是删除一行)

I <===> ^i 在行的开始插入

A <==> $a 行的末尾插入

o <==> A<CR> 下一行插入

O <==> ko 先上一行,之后插入 

#29 Re: vim命令学习 » vim使用技巧 » 2015-03-10 14:24:45

第一: 强大的重复 .(就是这个点)。 重点是重复的“改变” 比如删除


产看帮助

:h .

使用方法: 

  1. 重复删除比如经常需要删除整个单词。 你可以适应 diw 来删除一个单词。

这个时候有把光标移动到其他的单词上,点击 .  就可以删除这个单词。

这里: 重复的是改变的东西, 改变的东西可以上删除也可以增加。 

2 .比如 在插入模式,你输入了一个字符a 回到正常的模式, 点击 . 就重复a的出现。

具体例子你想输入100个a 。可以输入一个 a后 回到正常的模式 输入 99. 

#30 vim命令学习 » vim使用技巧 » 2015-03-10 14:10:23

admin
回复: 3

这里的内容来自 《practical vim》.这里只是做点笔记,方便记忆。

  1. vit : 用来修改<a> 标签的内容。 光标可以在a标签的任何地方。

2. vim -u NONE -N : 这样启动不加载用户自己的 .vimrc 

3. :version --查看版本

---------------------------------------

#31 php技术区 » ci框架中的 中如何加载配置文件 一个简化的示例 » 2015-03-10 12:18:51

admin
回复: 0

/*
file: config.php
<?php
$config['name'] = 'mysql';
$config['user'] = 'root';
 */
function get_config($replace = array()) {
    static $_config;

    if(isset($_config)) {
        echo 'here line:  ' . __LINE__ . "  is running \n ";
        return $_config[0];
    }

    include 'config.php';
    if(count ($replace) > 0) {
        foreach($replace as $key => $val) {
            if(isset($config[$key])) {
                $config[$key] = $val;
            }
        }
    }
    var_dump($config);
    return $_config[0] = &$config;
}

function config_item($item) {
    static $_config_item = array();

    if(!isset($_config_item[$item])) {

        $config = &get_config();

        if(!isset($config[$item])) {
            return FALSE;
        }
        $_config_item[$item] = $config[$item];
    }
    return $_config_item[$item];
}

get_config(array( 'user' => "new user"));

var_dump(config_item('user'));


#32 php技术区 » php 静态变量 static » 2015-03-10 11:47:54

admin
回复: 0

静态变量的作用域比较特殊, 如果在函数内定义的变量。

随着函数的结果, 普通的内部变量也就消失了。 静态变量不同。

首先看一个示例

function f() {
    static $x = 0;

    if(isset($x)) {
        echo "yes";
    } else {
        echo "no";
    }
}


f();

执行的结果是  yes

如果是 


function f() {
    static $x;

    if(isset($x)) {
        echo "yes";
    } else {
        echo "no";
    }
}


f();

执行的结果就是 no. 说明函数中没有 $x.

这就是静态变量和一般变量的区别。

静态变量离开函数的时候可以保存值。

function f() {
    static $x;

    echo ++$x;
}

for($i = 0; $i < 3; $i++) {
    f();
}

这个结果输出的是 123 说明两点

第一: 静态变量没有赋值的时候 ,是0。 其实这种说法不准确,如果是字符串就不一定。  

第二: 静态变量的作用域不仅仅在函数内。

#33 php技术区 » ci中load_class 的模拟 » 2015-03-10 11:26:33

admin
回复: 0

ci中load_class 的模拟

首先在同一个目录下三个文件

  1. test1.php

<?php class test1{}

  1. test2.php

<?php class test2{}

3. index.php

function &load_class($class, $prefix = '') {
    // 用来存储已经加载的的类
    static $_classes = array();

    if(isset($_classes[$class])) {
        return $_classes[$class];
    }

    $name = FALSE;

    if(file_exists($class . ".php")) {
        $name = $prefix . $class ;
        require($class. ".php");
    }

    if($name === FALSE) {
        die('加载的类不存在, 也就是文件 ' .  $class .'.php 不存在' );
    }

    // is_loaded($class);
    $_classes[$class] = new $name();

    var_dump($_classes);
    return $_classes[$class];
}


load_class('test1');
load_class('test2');

打印的结果

array(1) {
  ["test1"]=>
  object(test1)#1 (0) {
  }
}
array(2) {
  ["test1"]=>
  object(test1)#1 (0) {
  }
  ["test2"]=>
  object(test2)#2 (0) {
  }
}


#34 php技术区 » ci框架中的 load_class 分析 » 2015-03-10 11:02:23

admin
回复: 0

ci框架中的 load_class (ci中load_class 的模拟

首先定义一个静态的变量$_classes 用来存储已经加载过的类。 然后判断如果加载过了.

就直接返回这个类的一个实例。 然后结束。

这个过程中需要用一个 $name 来实现, $names就是  $_classes中的索引。 返回的结果

就是  $_classes[$class] . 

所以下来

有语句  $name = FLASE;这里要开始加载 类。

加载的方式从两个地方。 APPPATH ,这个地方是用户的app下的。 第二个 BASEPATH是系统目录下的。

如果找到了类的文件, 就生产 $name. $name的格式就是  $prefix. $class.

之后加载扩展中的类 和这个做发一样,只是使用了,自定义的前缀设置。

这样,通过$name 是否设置成功就可以判读,想加载的类是否成功了。

最后把加载过的$class保存起来,生成一个实例。 返回。就完成了。

function &load_class($class, $directory = 'libraries', $prefix = 'CI_') {
    static $_classes = array(); // 用来存储已经load过的class
// Does the class exist?  If so, we're done...
// 这里判断要加载的类是否已经加载, 
    if (isset($_classes[$class])) {
        return $_classes[$class];
    }

    $name = FALSE;

// Look for the class first in the local application/libraries folder
// then in the native system/libraries folder
// 这里加载的类是 libraries 中的类
    foreach (array(APPPATH, BASEPATH) as $path) {
        if (file_exists($path . $directory . '/' . $class . '.php')) {
            $name = $prefix . $class; // 这个只是起一个名字, 方便数组(已经加载过的类)索引
// 这里判断如果有个类 CI 开头的就不再执行 require
            if (class_exists($name) === FALSE) {
                require($path . $directory . '/' . $class . '.php');
            }

            break;
        }
    }

// Is the request a class extension?  If so we load it too
// 这里加载的是扩展中的类,区别是  config_item('subclass_prefix') 
    if (file_exists(APPPATH . $directory . '/' . config_item('subclass_prefix') . $class . '.php')) {
        $name = config_item('subclass_prefix') . $class;

        if (class_exists($name) === FALSE) {
            require(APPPATH . $directory . '/' . config_item('subclass_prefix') . $class . '.php');
        }
    }

// Did we find the class?
    if ($name === FALSE) {
// Note: We use exit() rather then show_error() in order to avoid a
// self-referencing loop with the Excptions class
        exit('Unable to locate the specified class: ' . $class . '.php');
    }

// Keep track of what we just loaded
    is_loaded($class);


    $_classes[$class] = new $name();

    return $_classes[$class];  // 这返回加载的类, 因为这个函数是引用返回。所以都将挂载某个地方。
}


#35 php技术区 » class_exists 用来判读类是否存在 » 2015-03-10 10:56:58

admin
回复: 0

class_exists 用来判读类是否存在

class test{}
if(class_exists('test')) {
    $my_test = new test;
    var_dump($my_test);
}

使用一个判读就不会出错。


#36 php技术区 » 小技巧如何让一个字符串最后只有一个特定的字符 » 2015-03-10 10:24:27

admin
回复: 0

生成url的时候, 一不小心最后多出了一个 / ;

比如: http://www.ipbbs.net//

可能的原因是 定义网站根目录的时候最后多了一个 /. 

只用使用这样的代码就可以去除多余的

$url = ttrim($url, '/'). '/';

这样最后就只有一个 /. 

原理: 不管有几个全部删除了,最后再添加一个。

#37 php技术区 » php 中的 STDIN » 2015-03-10 10:19:15

admin
回复: 0

如果在命令行下面运行这些命令会输出两个yes

if(defined('STDIN')) {
    echo "yes";
} else {
    echo "no";
}



if(defined('STDOUT')) {
    echo "yes";
} else {
    echo "no";
}

也就是说这个两个是已经定义的。

首先看看在命令行下 stdin 如何使用

$stdin = fgets(STDIN);
echo "you input string : ";
echo $stdin;
echo "\n === end === \n";


$ans = fscanf(STDIN, "%d", $int);
echo "you input int: ";
echo $int;

var_dump($ans); // int(1);

这里 stdin 就是标准输入的意思。

#38 php技术区 » php文件打开的方式总结 » 2015-03-09 16:03:26

admin
回复: 0

 *  r -- 只读的方式, 文件指针在文件头

 *  r+ -- 读写方式, 文件指针再文件头

 *  w  -- 清空文件,如果不存在建立, 可以写

 *  w+ -- 比w多一个读的功能

 *  a -- 写方式打开,指针在文件末尾, 不存在的时候创建

 *  a+ -- 读写方式打开,指针在文件末尾, 不存在的时候创建

 *  b -- 表面要操作的文件是二进制文件


#39 php技术区 » php函数的引用返回 » 2015-03-09 15:15:57

admin
回复: 0

php中引用用在三个地方。 变量,函数、类。

最简单就是变量。

比如

$a = 100;
$b = & $a;
$b = 200;
echo $a;  // 这是输出是 200

通过引用$a, 和 $b 是一样的东西。两个名字。


函数的引用返回

function &f() {
    static $x = 0;
    echo $x . "\n";
    return $x ;
}
$y = &f();
$y = 100;
f();

这里打印的结果是 100.

这里的$y = 100; 其实就把值100 写入到了静态的变量 $x 中。

#40 php技术区 » php中获得 用户自己定义的常量 » 2015-03-09 14:44:50

admin
回复: 0

可以使用

get_defined_constants(true)['user']

这样的写法最好写成 

$ans = get_defined_constants(true);
var_dump($ans['user']);


#41 php技术区 » php 更改工作目录 » 2015-03-09 14:25:51

admin
回复: 0

// 如果 /var/www/html 目录下存在文件 index.php

var_dump(chdir('/var/www/html'));
var_dump(getcwd());
include 'index.php';


这个时候可以方便的引用文件。

#42 css交流 » css ie6 margin 左右加倍解决方法 » 2015-03-07 13:29:51

admin
回复: 0

对于左飘,或者右飘,提交兼容性添加

display: inline;


#43 css交流 » xhtml 标签小结 » 2015-03-07 11:57:03

admin
回复: 0

结构标签

html, head, body, div, span

meta 标签script

文本 标签

h*, p, em, abbr, address, blockquote, q(行间小型引用), cite(行间引用)
code, ins(插入内容), del(删除内容), dfn, kbd, per, samp(举例子), var(定义变量)

连接

a, vbase

图像

img, area, map, object, param,

列表

ul, ol, li, dl, dt, dd

表格

table, tr, td, th, tbody, thead, tfoot, col, colgroup, caption

表单

form, input, textarea, select, option, optgroup, button, label, filedset, legent

脚本

script, noscript

表现

b, i, tt, sub, sup, big, small, hr


#44 css交流 » css中的伪类总结 » 2015-03-07 11:48:21

admin
回复: 0

  1. :link -- 用于a标签

  2. :visited -- 用过访问过的连接

  3. :active -- 用户激活的连接,比较点击一个按钮或者连接,没有松开的时候就是激活的状态

  4. :hover -- 鼠标在元素的上方

  5. :first -- 第一元素

  6. :first-child -- 第一个子元素

  7. :focus -- 获得焦点,通常是 input, textarea 

-------

还有几个伪对象

:after 元素之后

:before 元素之前

:first-letter

:first-line

#45 css交流 » html 中的 id和name 的区别 » 2015-03-07 11:43:30

admin
回复: 0

在一个页面中id,和 name都应该是唯一的。

最好使用一个,并且使用的是 id

因为 xhtml 提成, html中的 name属性不建议使用.

!!! 如果在是在input textarea 中 name是很有必要的。

#46 css交流 » xhtml 的三种文件类型 » 2015-03-07 11:37:50

admin
回复: 0

  1. 过渡

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

2. 严格

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

3. 使用框架技术

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

常用的是第一种, 遇到的问题也少

#47 css交流 » css布局的优势有那些 » 2015-03-07 11:28:39

admin
回复: 0

  1. 表现和结果相分离。 逻辑清晰

  2. css表现能力强

  3. css 可以减少网页的大小,可以重复使用


#48 css交流 » css 在一个网页中的位置 » 2015-03-07 11:24:31

admin
回复: 0

标准的网页有三个部分组成, 结构、表现、行为

结构: 就是html的"树形图" 和内容。 有 html, xml, xhtml 组成

表现: 网页的视觉效果, 有css 完成

行为: 动态的部分,有DOM 和 js 完成

#49 linux学习交流 » ssh直接登陆系统,不用密码 » 2015-03-06 15:46:06

admin
回复: 0

比如两台电脑 A, B.

都是linux系统, 现在通过A电脑直接登陆到B电脑上。

应为是通过 ssh 进行的。

只用把A的公钥添加到B的 ~/.ssh/authorized_keys 中即可。

具体步骤

第一: A生成一个公钥,这个操作在A机器上

ssh-keygen -t rsa -P ''

第二: 复制 A机器中的 ~/.ssh/id_rsa.pub文件到 B机器中的 ~/.ssh/authorized_keys 即可以了。

#50 css交流 » css 清楚浮动使用 inline-block » 2015-03-06 15:15:32

admin
回复: 0

inline-block 可以清除浮动,但是有个新的问题。就是不支持ie6,ie7.

解决办法

div { display:inline-block; _zoom:1;_display:inline;} /*推荐*/
div { display:inline-block; _zoom:1;*display:inline;} /*推荐:IE67*/

来源

http://www.cnblogs.com/leejersey/archive/2012/07/11/2586506.html

页脚

Powered by FluxBB