php的代码如下
代码如下 | 复制代码 |
$ftp_server='www.111cn.net';//服务器 $ftp_conn_id = ftp_connect($ftp_server,$ftp_port); if((!$ftp_conn_id) || (!$ftp_login_result)) { ftp_pasv($ftp_conn_id,true); //返回一下模式,这句很奇怪,有些ftp服务器一定需要执行这句 ftp_chdir($ftp_conn_id, $ftp_put_dir); |
注解
ftp_connect() 函数建立一个新的 FTP 连接。
若成功,则返回一个连接标识,否则返回 false。
The ftp_login() function logs in to the specified FTP connection.
ftp_login()函数的作用是:登录 FTP 服务器。
This function returns TRUE on success and FALSE and a warning on failure.
如果函数成功执行将返回True;如果失败将返回False,并给出警告。
ftp_put() 函数把文件上传到服务器。
若成功则返回 true,失败则返回 false。
我初步理解是strlen只能计算英文字符,而mb_strlen是可以计算中文与英文字符的长度,下面我来详细的介绍 strlen和mb_strlen的区别.定义和用法
strlen() 函数返回字符串的长度。
语法
strlen(string)参数 描述
string 必需。规定要检查的字符串。
而mb_strlen()函数的参考也是一样的。
例子
代码如下 | 复制代码 |
<?php |
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6
PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。
采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。
注意事项
php默认是不支持mb_strlen()函数的,需要安装扩展模块。安装方法如下:
代码如下 | 复制代码 |
yum install php-mbstring |
找到mbstring.so的位置,可以使用rpm -ql 安装的rpm名
修改/etc/php.ini配置文件,增加
代码如下 | 复制代码 |
extension=php_mbstring.so |
并确保php_mbstring.so模块在extension_dir = "/usr/lib64/php/modules"配置所指的路径里。
本文章简单总结的一个PHP if和or哪个效率对比程序,大家可参考参考。实例说明
代码如下 | 复制代码 |
<?php |
例2
代码如下 | 复制代码 |
<?php |
大家去测试一下吧这里我测试了的结果是or 比if效率要高一些哦。
在php中我们合并数据有两种简单快速的方式一种方式是利用array_merge()函数来操作,另一种办法是利用+号,下面我们来看看哈。用法
array array_merge ( array $array1 [, array $array2 [, array $... ]] )
例子 1
代码如下 | 复制代码 |
<?php $a1=array("a"=>"Horse","b"=>"Dog"); $a2=array("c"=>"Cow","b"=>"Cat"); print_r(array_merge($a1,$a2)); ?> |
输出:
代码如下 | 复制代码 |
Array ( [a] => Horse [b] => Cat [c] => Cow ) |
例子2
代码如下 | 复制代码 |
<?php |
1. 截取GB2312中文字符串
代码如下 | 复制代码 |
<?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = “”; $strlen = $start + $len; if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?> |
2. 截取utf8编码的多字节字符串
代码如下 | 复制代码 |
<?php //截取utf8字符串 { return preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.’}’. ?> |
但是在英文和汉字混合的情况下会出现如下问题:
如果有这样一个字符串
代码如下 | 复制代码 |
$str="这是一个字符串"; |
为了截取该串的前10个字符,使用
代码如下 | 复制代码 |
if(strlen($str)>10) $str=substr($str,10)."…"; |
那么,echo $str的输出应该是"这是一个字…"
那么要如何解决这个问题了,下面我来分享一个可以支持gb2312,gbk,big三种编码。
例1
代码如下 | 复制代码 |
$len = 19; $text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."...."); /****chr(0)不是null null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000 虽然chr(0)不会显示出什么,但是他是一个字符。 当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了 注: 编码 第一字节 第二字节 gb2312 0xa1-0xf7 0xa1-0xfe gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e 其次这个是网上搜索的,支持utf-8编码,原作者不详: *****/ function subString_UTF8($str, $start, $lenth) { $len = strlen($str); $r = array(); $n = 0; $m = 0; for($i = 0; $i < $len; $i++) { $x = substr($str, $i, 1); $a = base_convert(ord($x), 10, 2); $a = substr('00000000'.$a, -8); if ($n < $start){ if (substr($a, 0, 1) == 0) { }elseif (substr($a, 0, 3) == 110) { $i += 1; }elseif (substr($a, 0, 4) == 1110) { $i += 2; } $n++; }else{ if (substr($a, 0, 1) == 0) { $r[ ] = substr($str, $i, 1); }elseif (substr($a, 0, 3) == 110) { $r[ ] = substr($str, $i, 2); $i += 1; }elseif (substr($a, 0, 4) == 1110) { $r[ ] = substr($str, $i, 3); $i += 2; }else{ $r[ ] = ''; } if (++$m >= $lenth){ break; } } } return $r; } // End subString_UTF8; }// End String |
#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."