php
PHP 中文乱码的常见解决方法总结
三 21st
- 本文介绍了PHP中文乱码的常见解决方法。要解决PHP中文乱码最好最快的解决办法就是,页面申明的编码与数据库内部编码一致。
- PHP中文乱码是PHP开发中的常见问题之一。PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关。下面进行一番总结。
一.首先是PHP网页的编码
1. php文件本身的编码与网页的编码应匹配
a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312″),静态页面添加<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
More >
PHP 换行符转成<br/>: nl2br()函数
三 18th
nl2br()函数可将字符串\n中的换行符转成HTML的换行符号<br/>。
常用于在程序处理完字符串后将结果输出到网页中。
由于HTML中不识别程序语言中常用的\n, 所以得用nl2br()进行替换。
<?php $str = "Hello world\n See you later"; echo $str."<br/>"; echo nl2br($str); ?>
输出结果为:
Hello world See you later Hello world See you later
PHP 字符串去除空格函数trim
三 16th
trim(), ltrim(), rtrim()
在PHP获取表单的信息时,我们通常会对表单中的字符串进行处理,其中最基本的处理就是去除字符串两边的空格。
下面将介绍trim()系统函数的语法和使用:
string trim(string $str [, string $charlist])
trim()函数对输入的字符串进行去除开始位置和结束位置的空格(其实不只是空格)。
如果不设置第二个参数,trim()函数将会去除以下字符:
” ” : 空格;
“\t”: 制表符;
“\n”: 换行符;
“\r”: 回车符;
“\0″: 空字符;
“\x0B”: 垂直制表符;
如果设置第二个参数,trim()函数将只去除第二个参数中的字符集,而不会再去除上面默认的字符集。
<?php $str = " hello world "; $str_trim = trim($str); echo "$str<br />$str_trim"; ?>
看一下输出结果:
hello world hello world
怎么是一样的呢?第一行的空格怎么不见了。呵呵。我们在看一下网页的HTML代码吧:
hello world hello world
空格出现了吧!空格不见是因为浏览器显示时自动进行不显示多除的空格。
<?php $str = "Left hello world Right "; $str_trim = trim($str,"eftL"); echo "$str<br />$str_trim"; ?>
输出结果为:
Left hello world Right hello world Right
我们将左则和eftL字符相关的都去除了,你可能注意到了,右侧的Right中的”t”也在第二个参数中,为什么没去除。仔细看一下$str最后一个字符,其实是空格。因为空格(最右侧)没有去除(在HTML中能看见),所以”t”(右侧倒数第二)将不会处理。这同时说明函数第二个参数会覆盖trim()的默认字符集。
最后说一下ltrim()和rtrim()函数:
ltrim()函数只处理字符串的左侧;
rtrim()函数只处理字符串的右侧;
原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]
PHP 将数组拆分成多个变量: extract()函数
三 15th
extract()函数语法:
int extract( array $var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix ]] )
功能: extract()函数提取关联数组(对数字索引数组无效)每对key和value,生成以key为变量名、value为对应值的多组新变量。
<?php
$size = "old size"; //注意最后size变量的值。
$a = array(
"color" => "red",
"size" => "XXL",
"price" => "53");
extract($a);
echo "color = $color<br />";
echo "size = $size<br />";
echo "price = $price<br />";
?>
结果为:
color = red size = XXL price = 53
通过上例发现$size的值为XXL,而不是之前的”old size”,说明默认情况下当数组中的key与已有的变量冲突时,将覆盖原来的变量。
继续介绍extract函数的后两个可选参数。
第二个参数$extract_type是用来控制当发生冲突时的处理方法,可能的值为:
EXTR_OVERWRITE : 冲突时覆盖已有的变量,默认值。
EXTR_SKIP : 不覆盖已有的变量,即不在生成该key和value对的变量。
EXTR_PREFIX_SAME : 冲突时,生成的新变量名加一个前缀字符串,其值由第三个参数指定。
EXTR_PREFIX_ALL : 对所有生成的新变量名加一个前缀字符串,其值由第三个参数指定。
EXTR_PREFIX_INVALID : 对key的值换为变量名时无效时(如key第一个字符为数字,而变量名要求第一个字符不能为数字),在变量名加一个前缀字符串,其值由第三个参数指定。
EXTR_IF_EXISTS : 只取出之前已经存在的变量。
EXTR_PREFIX_IF_EXISTS : 对EXTR_IF_EXISTS取得的变量,在其变量名加一个前缀字符串,其值由第三个参数指定。
EXTR_REFS : 以引用的方式提取变量,说明提取变量的值发生改变会影响原数组的值。
注意:在变量名加前缀字符串时,新的变量名为 PREFIX_key,而不是PREFIXkey。
<?php
$a = array(
"color" => "red",
"size" => "XXL",
"price" => "53");
extract($a,EXTR_PREFIX_ALL,"SC");
echo "color = $SC_color<br />";
echo "size = $SC_size<br />";
echo "price = $SC_price<br />";
extract($a,EXTR_REFS);
$color="green";
echo $a['color']; //查看原数组的值
?>
结果为:
color = red size = XXL price = 53 green
原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]
PHP 数组其它排序方法:反向排序和随机排序
三 13th
array_reverse()函数与shuffle()函数介绍
array_reverse()
array array_reverse(array)
array_reverse()函数传入参数为一数组,返回一个与传入参数值相同但顺序相反的数组。
<?php
$a = array(1,2,3,4,5);
$a = array_reverse($a);
for ($i=0; $i<count($a); ++$i)
echo $a[$i]." ";
?>
结果为:
5 4 3 2 1
shuffle()
bool shuffle(array)
shuffle函数对传入的数组进行随机排序,成功返回TRUE,否则返回FALSE。
More >
PHP 多维数组排序
三 12th
数字索引数组:
bool usort( array &$array, callback $cmp_function )
usort函数对指定数组(参数1)按指定方式(参数2)进行排序。
当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是…)。
<?php
//定义多维数组
$a = array(
array("sky", "blue"),
array("apple", "red"),
array("tree", "green"));
//自定义数组比较函数,按数组的第二个元素进行比较。
function my_compare($a, $b) {
if ($a[1] < $b[1])
return -1;
else if ($a[1] == $b[1])
return 0;
else
return 1;
}
//排序
usort($a, 'my_compare');
//输出结果
foreach($a as $elem) {
echo "$elem[0] : $elem[1]<br />";
}
?>
结果为:
sky : blue tree : green apple : red
关联数组:
bool uasort(array &$array, callback $cmp_function)
bool uksort(array &$array, callback $cmp_function)
uasort, uksort用法与usort相同,其中uasort()对关联数组的值(value)进行排序,uksort()对关联数组的关键字(key)进行排序。
<?php
$a = array(
'Sunday' => array(0,'7th'),
'Friday' => array(5,'5th'),
'Tuesday'=> array(2,'2nd'));
function my_compare($a, $b) {
if ($a[1] < $b[1])
return -1;
else if ($a[1] == $b[1])
return 0;
else
return 1;
}
//按$a数组的值的第二个元素(7th,5th,2nd)进行排序
uasort($a, 'my_compare');
foreach($a as $key => $value) {
echo "$key : $value[0] $value[1]<br />";
}
//按$a数组的关键字的第二个字符(r,u,u)进行排序
uksort($a, 'my_compare');
foreach($a as $key => $value) {
echo "$key : $value[0] $value[1]<br />";
}
?>
结果为:
Tuesday : 2 2nd Friday : 5 5th Sunday : 0 7th Friday : 5 5th Sunday : 0 7th Tuesday : 2 2nd
原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]
PHP 数组排序(sort)
三 11th
数字索引数组排序:
函数:sort(array, [sort type])
说明:sort()函数按升序对指定数组(第一个参数)进行排序。
sort函数第二参数作用为指定排序类型,是可选参数,可能的值为:
SORT_REGULAR: 默认值,不改变类型进行排序;
SORT_NUMERIC: 把值作为数字进行排序;
SORT_STRING: 把值作为字符串进行排序;
如数组中有4和”37″,按数字排序,4小于”37″;按字符串排序,4大于”37″;
<?php
$a = array(4,"37",3,100,0,-5);
sort($a);
for ($i=0; $i<6; ++$i){
echo $a[$i]." ";
}
echo "<br />";
sort($a,SORT_STRING);
for ($i=0; $i<6; ++$i){
echo $a[$i]." ";
}
echo "<br />";
?>
输出结果:
-5 0 3 4 37 100 -5 0 100 3 37 4
降序排序:rsort(array, [sort type])
参数用法与sort函数相同。
关联数组排序:
函数:asort(array, [sort type])
说明:根据关联数组的元素值进行升序排序。参数使用见上面的sort函数。
函数:ksort(array, [sort type])
说明:根据关联数组的关键字进行升序排序。参数使用见上面的sort函数。
<?php
$a = array(
"good" => "bad",
"right" => "wrong",
"boy" => "girl");
echo "value sort<br />";
asort($a);
foreach($a as $key => $value){
echo "$key : $value<br />";
}
echo "<br />key sort<br />";
ksort($a);
foreach($a as $key => $value){
echo "$key : $value<br />";
}
?>
输出结果:
value sort good : bad boy : girl right : wrong key sort boy : girl good : bad right : wrong
降序排序:
arsort(array, [sort type]) 与 asort对应
krsort(array, [sort type]) 与 ksort对应
原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]
PHP 数组操作符
三 9th
联合操作:+
作用: 将第二个数组附加到第一个数组中(返回结果为一新的数组,不是直接改变第一个数组),但是关键字发生冲突的元素将不会加入。
<?php
$a = array(
'First' => '1st',
'Second' => '2nd',
'Third' => '3rd');
$b = array(
"Forth" => '4th',
"First" => 'another 1st'); // 关键字冲突元素
$c = $a + $b;
foreach ($c as $key => $value) {
echo $key.": ".$value."<br />";
}
?>
输出结果为:
More >
PHP 关联数组遍历方法大全
三 7th
在PHP中数组分为两类: 数字索引数组和关联数组。
其中数字索引数组和C语言中的数组一样,下标是为0,1,2…
而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。
下面介绍PHP中遍历关联数组的三种方法:
方法1:foreach
<?php
$sports = array(
'football' => 'good',
'swimming' => 'very well',
'running' => 'not good');
foreach ($sports as $key => $value) {
echo $key.": ".$value."<br />";
?>
输出结果:
football: good swimming: very well running: not good
方法2:each
<?php
$sports = array(
'football' => 'good',
'swimming' => 'very well',
'running' => 'not good');
while ($elem = each($sports)) {
echo $elem['key'].": ".$elem['value']."<br />";
?>
方法3:list & each
<?php
$sports = array(
'football' => 'good',
'swimming' => 'very well',
'running' => 'not good');
while (list($key, $value) = each($sports)) {
echo $key.": ".$value."<br />";
?>
原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]
一步一步学习PHP(8) — 数组
三 6th
1. PHP中的数组
与其把PHP中的数组理解为我们狭义上的“数组”,我觉得还不妨把这个数组一分为二,一者为我们常规上的数组,一者为我们的Dictionary。
2. 创建数组
如果数组不存在,那么向数组中存放值将会创建数组。
More >