PHP 的基本操作

php 可以单独创建 .php 文件,也可以在 HTML 中添加 php 标记后进行书写.
若不显示汉字,需在标记内添加:

header("Content-type:text/html;charset=utf-8");

一. PHP 的标记

<?php echo “hello php”; ?>

或者

<script language=“php”>echo “hello php”</script>

声明后便可以在其中编写 php 代码
php 还有其他标记方式, 不作了解.

二. php 注释

注释方式与 JS 类似.

三. 变量 与 常量

1. 变量

  • 变量的声明形式为:
$a = 10;
$b = "aaa";

输出变量的值,可以使用: echo 进行输出查询.
同时,变量声明时允许互相进行嵌套, 如:

$n = 'hello';
$$n = 'gaoshan';
echo $hello;

输出结果为:

gaoshan
  • 除此以外, echo还可以输出标签内容
echo "<a href = 'http://www.baidu.com'>这是一个百度的链接</a>";
或
echo "<input type='button' value='我是一个按钮'></input>";

那么,输出的形式即为一个连接以及一个按钮.

  • 有一点需要注意的是, 赋值时$c=$a表示把 a 的值赋给 c 但是对 a 本身没有影响, 而&$c=$a 表示将 a 的储存地址赋值给 c , 之后a 和 c 改一个,另一个就跟着一起变化.

2. 常量

参数定义

常量:不能改变的量
常量一经定义,就不能再次被赋值
第一个参数:要定义的常量名
第二个参数:常量的值
第三个参数:对大小写是否 _不敏感(true)_

举例:

define("PI", "3.1415926", true);
echo PI;
echo pi;

此时,两个输出都为3.1415926, 但是如果将参数三的true改为false, 那么echo pi;报错.

3. echo 特点

  • echo 后如果连接的字符串中含有变量, 那么应根据需要使用""或者'', 在""中,"$"默认为变量的声明符号,但是在''中,"$"默认为一个符号,以"$"原型进行输出.

$name = "Tom";
$age = 22;
echo "我的名字叫$name,年龄$age";
echo '我的名字叫$name,年龄$age';

此时的打印结果为

我的名字叫Tom,年龄22
我的名字叫$name,年龄$age
  • 当我们想要输出一个对象的格式及内容时, 通常采用的输出函数为var_dump( ).

var_dump($age);
var_dump("hhahsdhd");

此时打印的结果为

int(22)
string(8) "hhahsdhd"
  • echo 会对输出的值进行计算,如
echo "Z12" + "34B" + "5" + true;

此时打印的结果为

40  //0 + 34 + 5 + 1

4. 超关键字

可以在所有场景使用的关键字
如:

echo __LINE__; // 输出此行行数
echo __FILE__; // 输出此文件的文件地址
function show() {
 echo __FUNCTION__; // 输出此函数的函数名
};
show(); // 输出为 show

次超关键字

echo $_SERVER['HTTP_USER_AGENT']; // 打印服务器信息

定义一个类

class Person {
 public function showName() { // 函数名不区分大小写
  echo __CLASS__; //打印出是哪个类的 结果为Person
  echo __METHOD__; // 打印出类的方法
 }
}

使用创建的这个类创建对象

$p = new Person();
echo $p -> showName(); // 结果为Person 和Person::showName

5. 字符串

介绍了一些 php 中操作字符串的常用函数

1. 字符串的连接

输出的时候是用" . "进行连接的, 如

$str = "world";
echo $str . "hahaha";
//显示为: worldhahaha

注:在这里, 用" . "和用" , "连接在视觉上是没有区别的, 但是用点连接是把两个字符串拼接为一个, 而用逗号则是把两个字符串单纯地放在一起显示而已.

2. 获取字符串的长度
echo strlen($str); //显示为5
3. 判断子字符串第一次出现的位置

如判断 "bc" 在 "aabBcbc" 中出现的位置

echo strpos("aabBcbc", "bc"); // 输出为 5

如果不区分大小写

echo stripos("aabBcbc", "bc"); // 输出为 3
4. 二进制安全的概念

_****概念 :**_ 对字符串做操作时,是否代表字符串结束的"\0"字符做处理,是停止,还是继续往下检查,这个特性是继承 C语言的.

  • _****不安全:**_ 停止, 因为无法读取\0后面的字符串
  • _****安全:**_ 把"\0"当做字符,继续向下读取

举例:

echo strcoll("aaaa", "aaaa\0asdasds");

这里举了一个不安全的字符串相关函数,是判断两个字符串是否相等的. 我们看到, 在读取第二个字符串时, 函数将"\0"后面的内容都省略了, 判断结果为"0", 即相等.

5. 字符串的替换
$str1 = "gaoshan@163.com";
echo str_replace("g", "s", $str1); // 这是敏感大小写的方式
echo str_ireplace("G", "s", $str1); // 这是忽略大小写的方式
// 以上两个输出的结果均为: saoshan@163.com
6. 字符串的截取

这里我们使用两种方法:

1) substr(要做处理的字符串, 从第几个开始截取, 截取几个字符)
echo substr("hello world", 3, 4); // 输出为: lo w
2) 找到字符串第一次出现的位置,并返回之后的字符
echo strstr("hello world", "lo"); // 输出结果为: lo world
7. 删除字符串前后的空格
$strT = "    hello world!!!      ";
echo trim($strT);
// 输出结果为: hello world!!!
8. 字符串大小写的转化

小转大

$strA = "FGJHGkbadkahd";
echo strtolower($strA); // 输出结果为: fgjhgkbadkahd
echo strtoupper($strA); // 输出结果为: FGJHGKBADKAHD
9. 倒序字符串
echo strrev("hello PHP"); // 输出结果为: PHP olleh
10. 取出标签内的内容 / 取出含标签的内容
echo strip_tags("<a href = '###'>TOM</a>");
// 输出结果为: TOM
echo htmlspecialchars("<a href = '###'>TOM</a>");
//输出结果为: <a href = '###'>TOM</a>

6. 数组

1. 数组的创建和打印
$arr = array(4, 7, 6, 2, 9);
var_dump($arr);
// 输出结果为: array(5) { [0]=> int(4) [1]=> int(7) [2]=> int(6) [3]=> int(2) [4]=> int(9) }
2. 数组元素的访问
echo $arr[2]; // 输出元素为: 6
3. 添加数组元素
$arr[] = 10;
$arr[] = array('a','b');
var_dump($arr);
// 输出结果为; array(7) { [0]=> int(4) [1]=> int(7) [2]=> int(6) [3]=> int(2) [4]=> int(9) [5]=> int(10) [6]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } }

print_r($arr);
// 专门用来输出数组的函数, 输出结果为: Array ( [0] => 4 [1] => 7 [2] => 6 [3] => 2 [4] => 9 [5] => 10 [6] => Array ( [0] => a [1] => b ) )
4. 数组的标准创建及操作方式
$arrK=array("user"=>"TOM","password"=>"123456");

print_r($arrK);
// 输出的结果为: Array ( [user] => TOM [password] => 123456 )

echo $arrK["user"]; // 输出结果为: TOM

$arrK["sex"] = "male";

$arrK[] = "aaa";

print_r($arrK);
// 输出结果为: Array ( [user] => TOM [password] => 123456 [sex] => male [0] => aaa )
5. 数组的遍历

接4代码

foreach ($arrK as $key => $value) {
 echo $key."的值是:".$value."<br>";
};

输出结果为:

user的值是:TOM
password的值是:123456
sex的值是:male
0的值是:aaa
6. 删除数组中的某个键值对

假设有这样的一个数组

$arr = array("name" => "Tom", "age" => 22);
print_r($arr);
// 输出结果为: Array ( [name] => Tom [age] => 22 )
echo json_encode($arr);
// 输出结果为: {"name":"Tom","age":22}
//这是把数组数据转化成 JSON 格式,方便阅读

那么如果要删除数组中的 name 键值对

unset($arr["name"]);
print_r($arr); // 输出结果为: Array ( [age] => 22 )
7. 数组的长度
echo count($arr);
8. 判断一个值是否在数组内

注意:这里的有没有,指的是值,"1"和1是等价的. 这个函数会有一个布尔返回值.

$arr1 = array(3,6,9,5,33,"10");
var_dump(in_array(33, $arr1)); // true
9. 二维数组
$arrT = array(array(11,22,33),array(44,55,66));
echo $arrT[1][2]; // 打印结果为: 66
10. 速生成一个数组
$arrfast1 = range(1,9);
$arrfast2 = range("A","a");

7. 表单

php 文件是如何获取 HTML 提交的信息呢?

HTML:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <body>
  <form action="form.php" method="post">
   <!--
    get,注意 post 和 get 在地址栏上的不同
    //   
    get:  ?key=value&&key=value&&key=value......
    post:  把信息打成二进制数打包发送给服务器
   -->
   用户名: <input type="text" name="user" id="user" value="" /><br>
   密__码: <input type="password" name="pass" id="pass" value="" /><br>
   <input type="submit" value="提交"/>
  </form>
 </body>
</html>

PHP:

<?php
// 接收表单信息
var_dump($_POST); // $_GET 与 HTML 一致即可
?>

当在 HTML 文件中提交 Submit 表格时, 信息就会在 PHP 文件中被打印出来.

8. 函数

1. 函数的使用

在 php 中函数的使用和 JS 是基本相同的.

function show() {
 echo "aaaa";
};
show();

带参数:

function sayHello($a) {
 echo "<hr>" . $a;
};
sayHello("asdhkasdh");

带返回值:

function retFunc() {
 return "lalalala";
}
echo retFunc();
2. 传引用参数

不加 & 的时候,只是将 $a = 20;的那个20的值赋值给函数,在函数中改了参数值,$a的值不变
加了 & 的时候,是将$a = 20;的地址赋给函数的参数,在函数中改了参数值,$a的值变化

function varOp(&$c) {
 $c =40;
 echo $c;
}
$a = 20;
varOp($a);
echo $a;
3. 赋给函数参数默认值
function add($m, $n=9) {
 echo $m + $n;
}
add(3, 4); // 3+4
add(3); // 3+9
ADD(3); // 不区分大小写

四. 文件控制

利用 php 可以对文件夹内的文件进行控制操作.
首先在同一个目录下,创建一个名为11.txt 的文件.

1. 打开文件

$f = fopen("11.txt", "r");

"r" 为 mode 形式, 声明了可以对文件进行的处理方式.

含义
"r" 只读方式打开,将文件指针指向文件头。
"r+" 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x" 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
"x+" 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。

2. 读取文件

读取文件有以下四种方式:

1). 按字符读取
$str = fread($f, 3);
// 读的什么文件 , 以及一次读多长(3个字节表示一个汉字)

可以获取文件的大小, 全部读取

$str = fread($f, filesize("11.txt"));
2). 按行读取
$str = fgets($f); // 这是一行
echo $str;

按行遍历文件

while ($str=fgets($f)) {
 echo $str."<br>";
}
3). 把文件放在数组里
$arr = file("11.txt");
print_r($arr);
4). 整篇读取(速度最快)
$str = file_get_contents("11.txt");
echo $str;

3. 写入文件

一行行写,写入的内容会覆盖原内容,如果文件本身不存在,会创建新文件,然后写入.

$f = fopen("11.txt","w");
fwrite($f, "Tom\n");
fwrite($f, "Jerry\n");

如果需要整篇写入内容:

file_put_contents("11.txt", " 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮");

4. 关闭文件

操作完关闭文件是一个好习惯

fclose($f);

5. 拷贝文件

直接将文件拷贝一份放在原文件夹内

copy("11.txt", "22.txt");

6. 重命名文件

rename("22.txt", "33.txt"); // 22.txt 被重命名为33.txt

7. 删除文件

unlink("33.txt"); // 33.txt 被删除

五. 目录操作

首先获取当前目录

$d = opendir(".") // . 表示当前目录, .. 表示上级目录

1. 打开当前目录

1). 依次读取当前目录中的一条内容
$str = readdir($d);
echo $str;

如果想依次读取目录中的几条内容,就将上面的代码重复输入.

2). 读取并打印此目录下的所有文件

将此目录中的内容循环读取, 并依次打印

while ($str = readdir($d)) {
 echo $str . "<hr>";
}
3). 关闭文件夹
closedir($d);

2. 获取目录文件的数组

$arr = scandir(".");
for ($i=0; $i <count($arr) ; $i++) {
 echo $arr[$i]."<hr>";
}

3. 新建 / 删除 一个目录(显示返回值)

新建:

var_dump(mkdir("test")); // bool(true)

删除:

var_dump(rmdir("test")); // bool(true) 只有空的目录才可以被删除

4. 操作 URL

首先在本机获取一个地址
地址的基本信息打印

$path = "http://localhost/PHPSample/dirManage%e7%9b%ae%e5%bd%95%e6%93%8d%e4%bd%9c.php"; // 文件路径
$str = basename($path); // 文件名
$str = dirname($path); // 所在文件夹的名字
$newPath = $str."/login.html"; // 利用 php echo 的特点,我们可以将获取的地址拼接为新的地址进行操作
$arr = pathinfo($path); // 将相关信息一次性打印
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,983评论 1 24
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,360评论 0 20
  • PHP 学习目录 ├─PHP视频教程 1 LAMP网站构建 │ ├─PHP教程 1.1.1 新版视频形式介绍│ ...
    曹渊说创业阅读 16,151评论 29 417
  • 各位游客大家好,我们今天要参观游览的是广佑寺景区,广佑寺为国家AAAA级风景区,位于辽阳市中华大街一段60号,距离...
    68bed5e7a503阅读 3,718评论 0 13
  • 每年的国庆节基本都宅在家里,做凡尔纳一样的“书房里的旅行家”,在朋友圈里随着朋友们饱览祖国山水,观瞻各国风情。但是...
    奔跑的老熊阅读 859评论 5 9