php获取上个月的最后一天

 更新时间:2016年11月25日 14:56  点击:2201
php获取上个月的最后一天的方法非常的简单的我们只要使用strtotime函数就可以实现了,下面我们一起来看看这个例子了。

用php获取上个月最后一天的时间,有两种方法,都非常简单,详细实现源码如下:

 
<?php
date_default_timezone_set("PRC"); //设置时区
//方法一
$times = date("d") * 24 * 3600;
echo date("Y-m-d H:i:s", time()-$times);
echo '<br/>';
//方法二
$day = date('d');
echo date("Y-m-d H:i:s", strtotime(-$day.' day'));
?>

方法一是利用当前时间离本月初有多少时间,然后用当前时间减去这个时间差,就可以得到上月最后一天了。
方法二是先计算本月多少号,即离月初有多少天,然后用strtotime计算出$day天前的时间戳,也可以得到上个月的最后一天。

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协,下面我们来看Samba服务器的搭建理论篇

一、Samba与NFS、ftp

 

在了解Samba服务之前,需要先了解一下cifs协议(Common Internet File System),该协议最早是微软搞出来的一个协议。cifs 协议最早实现的是window主机之间的文件共享与打印共享,并不支持在linux上运行,samba是由Andrew Tridgell工程师通过逆向工程实现的一个cifs协议软件。通过该包可以实现windows和linux之间的文件共享。这和NFS的走的路刚好相反,NFS最初只支持在类unix系统上运行,后被windows也学了去,所以OS并不能简单的说谁好谁坏,很多东西都是互相借鉴的。

Samba与NFS较ftp的一个好处就是可以将远程盘或挂载点映射到本机上,每次可以像本地编辑一样编辑文件。而ftp需要先下载到本地修改后再上传。

二、samba相关包与程序

 

1、samba程序包

目前samba 在源里默认的是samba 4.x版本,主要使用的相关软件包有:

# yum list|grep samba

samba.x86_64                           4.1.12-21.el7_1                 @base

samba-common.x86_64                    4.1.12-21.el7_1                 @base

samba-libs.x86_64                      4.1.12-21.el7_1                 @base

samba-client.x86_64                    4.1.12-21.el7_1                 base

samba-python.x86_64                    4.1.12-21.el7_1                 base

samba-winbind.x86_64                   4.1.12-21.el7_1                 base

samba-winbind-modules.x86_64           4.1.12-21.el7_1                 base


samba服务相关的配置主要是samba、samba-common、samba-client三个包和cifs-utils包,具体三个包的作用如下:

samba:主要提供了smb服务所需的格项服务程序如smbd和nmbd及与samba相关的eventlogadm程序;

samba-client:该包主要提供了samba client挂载使用的相关程序,如smbpasswd、smbtree等;

cifs-utils:mount挂载时需要该包来支持cifs协议,不安装该包就没有mount.cifs命令。使用mount挂载时也会有报错;

smba-common: 该包提供了samba服务的主配置文件smb.conf、lmhosts文件、 pdbedit用户相关和testparm语法检查指令等。

 

2、samba相关文件与程序

 

/etc/samba/smb.conf:samba服务的主配置文件;

/etc/samba/lmhosts:NetBIOS Name与IP的对应关系,做用类似于/etc/hosts,一般无需配置;

/etc/sysconfig/samba: smbd, nmbd服务自定义参数配置文件;

/etc/samba/smbusers:windows与linux的用户不一致,可以通过该文件进行对应映射,在新版本中默认不存在,代替的是username map参数,通过该参数可以指定具体的映射文件;

 

/var/lib/samba/private/{passdb.tdb,secrets.tdb}:samba用户和密码数据库文件;

/usr/bin/{tdbdump,tdbtool}: Samba 3.0以后,默认使用tdb库(Trivial DataBase),这两个命令用于查看和操作tdb库,不过查看出的结果有点类似于16进制的数据,一般不使用,需安装 tdb-tools 包;

/usr/bin/{smbpasswd,pdbedit}:smbpasswd命令用于创建samba用户和修改密码,类型于passwd命令的功能。Samba 3.0后使用pdb库,pdbedit命令为新版本中的samba用户信息管理命令;

/usr/bin/testparm:用于测试smb.conf语法的正确性。

/usr/bin/smbclient:可以交互式管理samba共享的资源,有点类似于ftp命令;

/usr/bin/nmblookup:Netblos查询工具,类似于nslookup的功能;

/usr/bin/smbtree:查看网络中的工作组与主机名等,有点类似于windows中的网上邻居

使用示例:

 

1、tdbdump

# tdbdump passdb.tdb

{

key(13) = "RID_000003e8\00"

data(6) = "usera\00"

}

{

key(11) = "USER_usera\00"

data(182) = "\00\00\00\00\7F\A9T|\7F\A9T|\00\00\00\00bd\F5U\00\00\00\00\7F\A9T|\06\00\00\00usera\00\04\00\00\00WWW\00\01\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\01\00\00\00\00\E8\03\00\00\01\02\00\00\00\00\00\00\10\00\00\00\E5\81\0F<\99\AE*\BB\222\ED\84X\A6\13\09\00\00\00\00\10\00\00\00\A8\00\15\00\00\00 \00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EC\04\00\00"

}

{

key(19) = "INFO/minor_version\00"

data(4) = "\00\00\00\00"

}

{

key(9) = "NEXT_RID\00"

data(4) = "\E9\03\00\00"

}

{

key(13) = "INFO/version\00"

data(4) = "\04\00\00\00"

}


2、tdbtool

# tdbtool passdb.tdb

tdb> list

hash=23

 rec: hash=23 offset=0x00001e38 next=0x00000000 rec_len=28 key_len=13 data_len=6 full_hash=0xc6948dbc magic=0x26011999

hash=33

 rec: hash=33 offset=0x00001e6c next=0x00000000 rec_len=228 key_len=11 data_len=182 full_hash=0x41061b85 magic=0x26011999

hash=52

 rec: hash=52 offset=0x00001f68 next=0x00000000 rec_len=32 key_len=19 data_len=4 full_hash=0x538a9285 magic=0x26011999

hash=65

 rec: hash=65 offset=0x00001fd4 next=0x00000000 rec_len=20 key_len=9 data_len=4 full_hash=0x70a13a4c magic=0x26011999

hash=103

 rec: hash=103 offset=0x00001fa0 next=0x00000000 rec_len=28 key_len=13 data_len=4 full_hash=0xf2394cd5 magic=0x26011999

freelist:


3、smbpasswd与pdbedit

 

创建samba用户前,需要用户先在本地中存在

 
# useradd -G users smb1
# useradd -G users smb2
# echo 361way.com | passwd --stdin smb1
# echo 361way.com | passwd --stdin smb2


使用smbapsswd创建:

 

smbapsswd常用项:


-a:创建新用户,不加-a 参数直接跟用户为修改用户密码;
-c:指定密码文件生成的位置;
-x:删除用户;
-d:临时禁用一个用户;
-e:enable一个用户;
-D:指定debug级别;
-n:设置一个用户的密码为空,用户使用空密码需在smb.conf的global 项配置中null passwords = yes ;
# smbpasswd -a smb1
New SMB password:
Retype new SMB password:
Added user smb1.
使用pdbedit命令创建:

pdbedit常用选项:
-L :列出samba用户与信息;
-v :需要搭配 -L 执行,可列出更多的信息;
-w :需要搭配 -L 执行,使用旧版的 smbpasswd 格式来显示信息;
-a :新增samba用户;
-r :修改一个用户的信息,需搭配很多特殊参数,请man pdbedit;
-x :删除一个可使用 用户,可先用 -L 找到用户后再?h除;

# pdbedit -a -u smb2

new password:

retype new password:

Unix username:        smb2

NT username:

Account Flags:        [U          ]

User SID:             S-1-5-21-1462619673-710706269-1943266961-1002

Primary Group SID:    S-1-5-21-1462619673-710706269-1943266961-513

Full Name:

Home Directory:       
\\www\smb2

HomeDir Drive:

Logon Script:

Profile Path:         
\\www\smb2\profile

Domain:               WWW

Account desc:

Workstations:

Munged dial:

Logon time:           0

Logoff time:          Wed, 06 Feb 2036 23:06:39 CST

Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST

Password last set:    Sun, 13 Sep 2015 21:09:45 CST

Password can change:  Sun, 13 Sep 2015 21:09:45 CST

Password must change: never

Last bad password   : 0

Bad password count  : 0

Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

pdbedit 是一个新的指令,但无法修改用户密码,所以还是无法完全替代smbpasswd的作用。

 

4、testparm

 

testparm是一个语法测试命令,具体用法如下:

 
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        map to guest = Bad User
        log file = /var/log/samba/log.%m
        max log size = 50
        load printers = No
        idmap config * : backend = tdb
        cups options = raw
[homes]
……………………略


5、smbclient

smbclient有两个功能,一个是查询功能,一个是类似于ftp交互式管理功能,如下:

smbclient查询当前的共享信息

# smbclient -L 192.168.0.109

Enter root's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.12]

        Sharename       Type      Comment

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

        public          Disk      Public dir

        IPC$            IPC       IPC Service (Samba Server Version 4.1.12)

Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.12]

        Server               Comment

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


类ftp交互管理的用法

# smbclient '//192.168.0.109/public' -U smb1

Enter smb1's password:

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.12]

smb: \> dir


# 我??可以使用 dir, get, put 等常用的 ftp 指令来进行文件传输
?   :列出所有可以用的指令,常用!
cd  :切换目录
del : 删除文件
lcd : 改变本机目录
ls   : 查看samba共享目录下的文件信息
dir : 与s 相同
get : 下载文件
mget: 多个文件下载
mput: 多个文件上传
put :单个文件上传
rm  : 删除文件
exit: 退出
# 内部更多指令可以?号查看,也可以 man smbclient 获取。
6、smbtree

# smbtree
Enter root's password:
WORKGROUP
        \\YNNYCSK9X26EZUE         //我的win7主机在这里也查看到了
MYGROUP
        \\WWW                           Samba Server Version 4.1.12


7、客户端mount

 

mount.cifs或mount -t cifs常用参数有(-o后面带的部分):

username=登陆用户名,例如 username=smb1 ;

password=登陆密码:与上面 username 对应;

iocharset=本机的默认编码,如utf8  或 gb2312等;

codepage=提供samba服务的远程主机的编码方式,例如windows下繁体中文为cp950、简体中文为cp936 。

linux客户端下的挂载
# mount -t cifs //192.168.1.109/smb1 /mnt/samba \
-o username=smb1,password=361way.com,codepage=cp936
windows客户端下的挂载,也可以在开始--运行中输入\\ip
NET USE Q: \\192.168.0.109\public
net use H: \\192.168.0.109\shareFile "password" /user:"username"
注:需要注意的是linux与win下挂载时,使用的斜扛方向是有区别的。

8、smbstatus

 

用于查看当前连接到服务端的客户端主机信息:

# smbstatus

Samba version 4.1.12

PID     Username      Group         Machine

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

2894      nobody        nobody        192.168.0.104 (ipv4:192.168.0.104:50709)

Service      pid     machine       Connected at

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

public       2894   192.168.0.104  Sun Sep 13 21:40:04 2015

No locked files


三、samba服务配置

 

/etc/samba/smb.conf配置文件:

[global]

        workgroup = MYGROUP        //工作组

        netbios name    = 361way     //netbios名

        server string = Samba Server Version %v   //服务器字符串,可任意写

        unix charset    = utf8                    //linux下使用的编码

        display charset = utf8                    //本机显示的编码

        dos charset     = cp936                  //win下使用的编码

        log file = /var/log/samba/log.%m     //日志文件位置

        # maximum size of 50KB per log file, then rotate:

        max log size = 50

        security = user

        passdb backend = tdbsam           //指定用户名密码存储的数据格式

        passdb backend = tdbsam:/etc/samba/private/passdb.tdb  //指定密码文件的位置

        passdb backend = ldapsam:"
ldap://ldap-1.example.com
 
ldap://ldap-2.example.com
" //使用ldap认证,后面的是备用节点

        map to guest = Bad User             //开启匿名访问

        interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24   //监听的本机端口和使用IP,默认监听所有

        hosts allow = 192.168.12.  192.168.13. EXCEPT 192.168.12.100  //允许连接的IP网段,默认允许所有

        cluster addresses = 10.0.0.1 10.0.0.2 10.0.0.3   集群设置

        username map = /usr/local/samba/lib/users.map   //用户名对应关系映射

        logon drive   = K:              //windows自动挂载时映射的本地盘符名

        logon script  = startup.bat     //客户端访问后自动执行的脚本程序

        time server   = yes             //自动让 Windows主机 与 Samba 服务器时间同步

        admin users   = root            //预设的管理用户

        logon path    = 
\\%N\%U\profile
 //使用者的个人化设定

        logon home    = 
\\%N\%U
         //使用者的家目录位置!

        set quota command = /usr/local/sbin/set_quota   //磁盘配额相关

        load printers = yes                     //开启打印机共享

        cups options = raw

        # obtain a list of printers automatically on UNIX System V systems:

//具体共享项的常用选项

[共享名称]
comment=提示性信息
path=具体共享的目录路径
browseable=是否让所用使用者查看,yes或no
writable=是否有写入权限,yes或no
create mode 与 directory mode ,默认权限设置,如:force create mode = 0755,默认是000
writelist = 使用者, @群?  除了@,还有+、&两个符号
上面的选项中大部分我都进行了注解,这里再选取几个典型的部分细说下。

security = user :在老的版本中,可选项中有security = share、user、domain,share即开启匿名防问,在新的版本中该项由于安全考虑被取消掉了。默认是user,想开启匿名防问加后面的map to guest行。新版本中的security 后面可以跟的有AUTO、USER、DOMAIN、ADS(windows AD域);

logon script = startup.bat :自动执行脚本,多用于windows客户端访问后,自动将访问目录映射为本地盘,如这里使用脚本内容为:

net time \\192.168.0.109  /set /yes
net use K: /samba   或
NET USE Q: \\192.168.0.109\public
需要注意的是上面的内容需要在windows下编辑,如果使用linux下编辑,需要使用unix2dos命令进行转换。

更多配置部分请使用man smb.conf查看。

四、防火墙与selinux

 

防火墙上需要放行的端口有UDP 137、138--nmbd服务占用、TCP的139、445 --smbd服务使用:

# netstat -ntlup|grep mb

tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2483/smbd

tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2483/smbd

tcp6       0      0 :::139                  :::*                    LISTEN      2483/smbd

tcp6       0      0 :::445                  :::*                    LISTEN      2483/smbd

udp        0      0 192.168.0.255:137       0.0.0.0:*                           2489/nmbd

udp        0      0 192.168.0.109:137       0.0.0.0:*                           2489/nmbd

udp        0      0 0.0.0.0:137             0.0.0.0:*                           2489/nmbd

udp        0      0 192.168.0.255:138       0.0.0.0:*                           2489/nmbd

udp        0      0 192.168.0.109:138       0.0.0.0:*                           2489/nmbd

udp        0      0 0.0.0.0:138             0.0.0.0:*                           2489/nmbd

 

使用用下面的命令放行:

 

firewall-cmd --permanent --add-port=137-138/udp
firewall-cmd --permanent --add-port=139/tcp --add-port=445/tcp
firewall-cmd --reload
selinux相关项在/etc/samba/smb.conf的注释部分都有说明,如下:
修改共享目录的上下文件为samba_share模式
#chcon -t samba_share_t  /test
系统目录需要读写时需要开启:
# setsebool -P samba_export_all_ro on
# setsebool -P samba_export_all_rw on
home目录共享时需要
#setsebool -P samba_enable_home_dirs on
域控制时需要使用(一般用不到)
# setsebool -P samba_domain_controller on

本文章来为各位介绍一篇关于php中使用uniqid mt_rand 生成随机不重复字符串的几种方法,希望文章能够对各位有用。

方法一:

<?PHP
     $str = uniqid(mt_rand(),1);
     echo 'sha1: ',sha1($str);
     echo '<br>';
     echo 'MD5: ',md5($str);


采用uniqid函数,配合mt_rand随机函数,最后使用散列值得出最终唯一值。


但是通过测试中,发现随机数的唯一性有些相同部分,大概有11位相同的(但无大碍)

 

第二种方法:GUID

<?PHP

 

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

     echo "<br>";

     echo sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

 

 ?>


例子3

<?php
//使用uniqid mt_rand 生成随机不重复字符串的方法
$snKeys=array();
$total=10;//设置生成数量
$prefix='code';//字符串前缀
while(count($snKeys) < $total) {
     $snKeys[$prefix . md5(uniqid(mt_rand(), true))] = null;
}
print_r($snKeys);


 

在php中file_exists与is_file,is_dir都可以用来检测目录或文件是否存在了,那么它们三者的具体区别在哪里呢,下面我们一起来看看吧。


很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢?

PHP的 file_exists = is_dir + is_file

它既可以判断文件是否存在,又可以判断目录是否存在。但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是get,cookies,所以结论是:

◦如果要判断目录是否存在,请用独立函数 is_dir(directory)
◦如果要判断文件是否存在,请用独立函数 is_file(filepath)
--------------------------------------------------------------------------------------

is_file 只判断文件是否存在;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;
--------------------------------------------------------------------------------------

查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。

写程序验证一下:

分别执行1000次,记录所需时间。

文件存在(当前目录)

is_file:0.4570ms

file_exists:2.0640ms

文件存在(绝对路径3层/www/hx/a/)

is_file:0.4909ms

file_exists:3.3500ms

文件存在(绝对路径5层/www/hx/a/b/c/)

is_file:0.4961ms

file_exists:4.2100ms

文件不存在(当前目录)

is_file:2.0170ms

file_exists:1.9848ms

文件不存在(绝对路径5层/www/hx/a/b/c/)

is_file:4.1909ms

file_exists:4.1502ms

目录存在

file_exists:2.9271ms

is_dir:0.4601ms

目录不存在

file_exists:2.9719ms

is_dir:2.9359ms

is_file($file)

file_exists($file)

当$file是目录时,is_file返回false,file_exists返回true

文件存在的情况下,is_file比file_exists要快得多;

要检测文件所在的目录越深,速度差越多,但至少快4倍。

文件不存在的情况下,is_file比file_exists要慢一点点,但可以忽略不计。

目录存在的情况下,is_dir比file_exists要快得多;

目录不存在的情况下,is_dir比file_exists要慢一点点,但可以忽略不计。

结论:

如果要判断文件是否存在,用函数 is_file(),

如果要判断目录是否存在,用函数 is_dir(),

好像没地方需要用file_exists了,不确定传入的参数是文件还是目录的时候用

面试题不同公司不一样像百度公司要求算法高这个也能理解了,下面整理了一道据说是百度的面试题,我们来看看它的算法与答案吧。

据说是一个百度php的面试题,已给定一个数组:

$arr = array(‘b’=>’a’, ‘c’=>’a’, ‘e’=>’b’, ‘d’=>’b’, ‘f’=>’c’, ‘g’=>’e’, ‘h’=>’f’);


写一个算法,完成到以下格式的转换:

array (

    'a' => array (

        'b' => array (

            'e' => array (

                [0] => 'g',

            ),

            [0] => 'd',

        ),

        'c' => array (

            'f' => array (

                [0] => 'h',

            ),

        ),

    ),

)


这个结构应该属于一种Trie树。当时在写的时候由于没发现array_keys()函数第二个参数(汗一个先),于是写了以下这个方法来实现。

function getsomething(&$arr, &$re, $c='') {

    $c or $c=array_shift(array_keys($arr));//当未指定开始位置时 从数组第一个元素开始

    $flag= false;   //标记 当有和$c对应的key(键)时 设为true

    while($k = array_search($c, $arr)) {    //循环获取值为$c的key。

        getsomething($arr, $re[$c], $k);    //一直递归到最后没有key对应时

        unset($arr[$k]);        //移除  这个元素已经不会再使用了

        $flag = true;

    }

    //当flag为真时 说明之前获得过正常存在的key,不会继续生成[0]下标的元素

    if(! $flag) return $re[] = $c; 

}

//调用

getsomething($arr, $re, 'a');


虽然有点儿奇葩,至少还是实现了。以下是某网友使用array_keys()的另一解法:

function _array_keys($k, $arr) {

    $return = array();

    if($ret = array_keys($arr, $k)) {

        foreach($ret as $v) {

            if($t = _array_keys($v, $arr)) {

                $return[$v] = $t;

            } else {

                $return[] = $v;

            }

        }

    }

    return $return;

}

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • jquery获取tagName再进行判断

    如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
  • DOM XPATH获取img src值的query

    复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的...2015-10-23
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • 使用C#获取系统特殊文件夹路径的解决方法

    本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • php如何获取文件的扩展名

    网上也有很多类似的方法,不过都存在这样那样的不严谨的问题,本文就不一一分析了,这里只给出最正确的利用php 获取文件扩展名(文件后缀名)的方法。 function get_extension($filename){ return pathinfo($filename,PATHIN...2015-10-30