PHP 初学笔记

来源:互联网 发布:乎的组词有哪些 编辑:程序博客网 时间:2024/06/15 16:17

PHP自学笔记
(C/C++/JAVA功底,忽略面向对象总结)


/***********************************************************************************/
文件处理
/***********************************************************************************/

一、打开文件:fopen
例如:
<span style="font-family:Comic Sans MS;font-size:14px;">$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];$fp = fopen("$DOCUMENT_ROOT",'wb');// 一般属性都要加b,这是为了更大的移植性错误检测处理:$fp = @fopen("$DOCUMENT_ROOT",'wb');if(!$fp){xxxxxxxxxxxxxxexit;}</span>


二、写文件:fwrite
例如:
$outputstring = "xxxxxxxxxxxxxx";fwrite($fp,$outputstring,strlen($outputstring));


三、读文件:feof/fgets/fgetss/fetcsv/readfile/fpassthru/file/fread/fgetc
feof($fp) 是否读到文件尾

fgets($fp,999):每次读取文件998B

fgetss($fp,999,'</br>');每次读取文件998B,过滤 </br>

fgetcsv($fp,100,"\t");从文件中读取一行,在有制表符的地方进行分行

readfile("xxx");一次读取一个文件送到浏览器中,返回一个数组

fpassthru($fp)同上,返回true faluse

nl2rd(fread($fp,filesize(xxxx)))


文件是否存在:file_exists()
删除一个文件:unlink("xxxxx")
关闭文件:fclose($fp)


文件定位:
rewind($fp)
fseek($fp,1,SEEK_CUR)
ftell();


文件锁:
flock($fp,LOCK_SH/EX/UN/NB)



/***********************************************************************************/
数组
/***********************************************************************************/
一、定义                                                                                        count($arr)统计数组的元素个数
定义一维数组:
<span style="white-space:pre"></span>$arr = array("hello","world");// arr[0] = "hello"$arr = range(1,10)// arr[0-9] =0-9$arr = array("song" => 5,"jiu"=> "hs" ); //arr["song"]=5


定义二维数组:
<span style="font-size:14px; white-space: pre;"></span><span style="font-size:14px;">$arr = array(array(),array(),array());</span>


二、遍历
2.1遍历一维数组: 注意每个数组第二次遍历之前需要 reset($arr)
<span style="font-size:14px;"><span style="white-space: pre;"></span>for($i = 0; $i< 3; $i++){echo $arr[$i];}foreach($arr as $cur){echo $cur}while($temp = each($arr)){echo $temp['key'].'-'$temp['value'];}while(list($key,$value) = each($arr)){echo "$key - $value";}</span>




2.2遍历二维数组
<span style="white-space:pre"></span>for($row = 0; $row <3 ;$row++){for($col = 0;$col<3;$col++){echo "$arr[$row][$col]";}}for($row = 0;$row<3;$row++){echo $arr[$row]["key"]........}



三、操作
3.1 +
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;====> apple,banana,cherry
$c = $b + $a;  ====>pear,starwberry,cherry
3.2 = 
==只比较value 不比较key,两个数组key的值是顺序排列即可且都一样。0==“0”
===所有的都比较




四、数组排序

sort正常数组升序rsort降序
asort关联型数组value升序arsort降序
ksort关联型数组key升序ksort降序
array_reverse()专门逆序返回逆序后的数组
$number = array_reverse($numver);

自定义排序:
<span style="white-space:pre"></span>function compare($x,$y){if($x[1]==$y[1]]){return 0;}else if($x[1] < $y[1]]){return -1;}else{return 1;}}usort($arr,'compare');uksort




五、操作数组的指针
each(),//单独each不用循环的时候,它是同时抓取 key以及value
current(),reset(),end(),next(),pos(),prev();
sizeof/count()// 计算数组的元素个数
array_count_values// 计算数组中元素个数出现的频率

extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码:
extract(array var_array,[, int extract_type],[,string prefix]);

例如:
<?php$a = 'Original';$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");extract($my_array);echo "\$a = $a; \$b = $b; \$c = $c";?><?php$a = 'Original';$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");extract($my_array, EXTR_PREFIX_SAME, 'dup');echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";?>






/***********************************************************************************/
字符串
/***********************************************************************************/


一、字符串的格式化
1.1 字符串的整理:chop,ltrim,trim
trim只格式化字符串末尾
ltrim从字符串左边开始格式化
rtrim从字符串右边开始格式化
1.2 格式化字符串以便显示
nl2br用xhtml 的<br />替换字符串中的换行符/n针对于浏览器是非常有用的
printf("%s",$str)// 指定什么类型输出
strtoupper()// 转换成大写
strtolower()// 转换成小写
ucfirst()// 将第一个单词大写
ucwords()// 将所有首字母大写


###重点###
1.3 格式化字符串以便存数SQL
单引号,双引号,反斜杠\, NULL
\=>\\
'=>\'
"=>\"
\\=>\\\\
addslashes()会格式化成适合SQL语句的格式
Stripslashes()会将是个SQL语句的格式转换成原本的格式

1.4 字符串分割explode(),implode(),join()
注意:如果域名大写的或者大小写混搭,这个函数就无法正常使用,那么就需要转换成全是小写或者全是大写的。
$str = explode('@',$email)// 将email分成了两部分,@之前存在str[0],@之后存在str[1]里面

// join 和 implode 类似
$arr = array('Hello','World!','Beautiful','Day!');
$str = implode(" ",$arr);

str = "Hello World! Beautiful Day!"


#分割效果最好的是strtok()
$string = "Hello world. Beautiful day today.";$token = strtok($string, " ");while ($token !== false){echo "$token<br />";$token = strtok(" ");}


结果:Hello
world.
Beautiful
day
today.

// substr()
$str = 'woshihaoren';
substr($test,2)=>"shihaoren"
substr($test,-3);=>"ren"
substr($test,2,-3);=>"shihao"

1.5字符串的比较strcmp(),strcasecmp(),strnatcmp()
strcmp($str1,$str2)//区分大小写
=>str1 == str2return 0;
=>str1 >str2return 1;
=>str1 <str2return -1;
strcasecmp($str1,$str2)// 不区分大小写,其他与strcmp 完全一样
strnatcmp// "2" <"12"

1.6 查找字符串
strstr($str,'song');//区分大小写!如果找到返回'somg',否则就返回-1。
stristr//不区分大小写,
strrchr(string,char)// 第二个参数规定要查找的字符。
   如果该参数是数字,则搜索匹配数字 ASCII 值的字符。


####strops替换strstr()   因为strops速度要比 strstr快很多
####strrpos反向查找


1.7 替换
str_replace(mixed needle,mixed new_needle,mixed haystack[,int &count]);//对大小写敏感,str_ireplace 无视大小写
用new_needle 替换了haystack中所有的needle, count是要执行替换的操作次数
#########count 是引用,所以可以作为带出参数!
$arr = array("blue","red","green","yellow");print_r(str_replace("red","pink",$arr,$i));echo "Replacements: $i";$find = array("Hello","world");$replace = array("B");$arr = array("Hello","world","!");print_r(str_replace($find,$replace,$arr));
substr_replace($test,'x',-1);// 将字符串$test 的 -1 位置替换成x

二、正则表达式// 必须被包在 ' '里面
2.1.at可以与Cat,sat,mat等匹配
2.2[a-z]at[] 里面是a-z的一个字符
2.3[aedf]范围是a,e,d,f
2.4[a-zA-Z]所有字母范围a-z 或者 A-Z
2.5[^a-z]除了小写字母以外
2.6[[:alnum]]+文字数字字符可以被重复1次或更多次至少有一个字母字符
2.7(very)*large=>large,very large,very very large ............
2.8^abc以abc开头的匹配
2.9abc$以abc结尾的匹配
2.10^[a-z]$匹配只包含a-z之间一个字符的字符串

2.11 song|jiu|lin匹配song,jiu或者lin
2.12\$=>$
\\=>\
\.=>.
\,=>,

//当一个字符类的开始或者结尾出现 .  的时候,这只代表一个点号
^[a-zA-Z0-9_\-.]+至少有一个字母,数字,下划线,连接符,点号,或者这些组合开始


2.13 用正则表达式查找字符串
ereg(string patten,string search,array[matches]);
在Search中搜寻与patten正则表达式匹配的内容并存入matches
eregi 不区分大小写,
2.14 用正则表达式替换子字符串
string ereg_replace(string patten,string replacement,string search);
2.15 用正则表达式分割字符串
array split(string patten,string search[,int max]);



0 0
原创粉丝点击