PHP 初学笔记

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){
		xxxxxxxxxxxxxx
		exit;
	}</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 == str2 return 0;
=> str1 > str2 return 1;
=> str1 < str2 return -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.9 abc$ 以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]);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值