分类 HTML,CSS,JS,PHP 下的文章

分类 代码/语法 说明
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
断言 (?=exp) 匹配exp前面的位置
(? 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(? 匹配前面不是exp的位置
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

本函数区别于realpath,并非基于真是存在的文件系统获取文件路径。故应用范围更为广泛一些,即使文件系统中没有该文件,也可以获得文件的真实路径。

/**
 * 整理文件路径
 * 作者: 若海[[email protected]]
 */
function path_tidy($path) {
    $tidy = array();
    $path = strtr($path, '\\', '/');
    foreach(explode('/', $path) as $i => $item) {
        if($item == '' || $item == '.' ) {
            continue;
        }
        if($item == '..' && end($tidy) != '..' && $i > 0) {
            array_pop($tidy);
            continue;
        }
        $tidy[] = $item;
    }
    return ($path[0]=='/'?'/':'').implode('/', $tidy);
}

//下例将输出/a/b/d/e
echo path_tidy('/u/../a/./b/c/../d/e/./');

现象:在一些浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top或者margin-bottom的值会“转移”给外层div。

原因:盒子没有获得 haslayout 造成 margin-top 无效

解决的几种办法,请根据实际情况选用:

1、在父层div加上:overflow:hidden;

2、把margin-top外边距改成padding-top内边距;

3、父元素产生边距重叠的边,有不为 0 的 padding 或 宽度不为 0 且 style 不为 none 的 border;父层div加:padding-top: 1px;

4、让父元素生成一个 block formating context(实现方法见下表);父层div加:position: absolute;


float: left/right
position: absolute
display: inline-block/table-cell (或其他 table 类型)
overflow: hidden/auto
</blockquote>```

Google公布了制图服务(Google Chart)的接口,这项服务用起来相当简单,只使用浏览器就可以用来为统计数据自动生成图片。

目前谷歌制图服务提供折线图、条状图、饼图、Venn图、散点图、二维码图等。下面我们来看下如何使用这个简单的服务来生成二维码。

接口地址 http://chart.apis.google.com/chart?chs=宽高值x宽高值&cht=qr&chld=等级|边距&chl=内容

参数说明:

宽高值:生成二维码尺寸,单位是像素,目前生成的二维码都是正方形的,所以两个宽高值都设置为一样的值

等级:四个等级,L-默认:可以识别已损失的7%的数据;M-可以识别已损失15%的数据;Q-可以识别已损失25%的数据;H-可以识别已损失30%的数据

边距:生成的二维码离图片边框的距离

内容:生成二维码的内容,但一定要URLENCODE

下面给一个JS生成二维码地址的函数

function qrcode(data, size, level, margin) {
    size = size || 320;
    level = level || 'L';
    margin = margin | 0;
    return [
        'http://chart.apis.google.com/chart?cht=qr',
        '&chs='+size+'x'+size,
        '&chld='+level+'|'+margin,
        '&chl='+encodeURIComponent(data)
    ].join('');
}
//测试
var url = qrcode('http://www.anrip.com/post/748');
window.location.href = url;

试验:让anrip.com可以读取vmlu.com的cookie。

首先,在vmlu.com下放置一个文件write.php,内容:

header('P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"');
setcookie('username', 'guest', time()+3600, '/', '.anrip.com');

其次,在anrip.com下放置一个文件read.php,内容:

var_dump($_COOKIE);

最后,依次访问下面的地址p查看结果的变化。

www.anrip.com/read.php
www.vmlu.com/write.php
www.anrip.com/read.php

参考文献 http://www.w3.org/TR/P3P/