PHP 的基本操作

php 可以單獨創(chuàng)建 .php 文件,也可以在 HTML 中添加 php 標(biāo)記后進行書寫.
若不顯示漢字,需在標(biāo)記內(nèi)添加:

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

一. PHP 的標(biāo)記

<?php echo “hello php”; ?>

或者

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

聲明后便可以在其中編寫 php 代碼
php 還有其他標(biāo)記方式, 不作了解.

二. php 注釋

注釋方式與 JS 類似.

三. 變量 與 常量

1. 變量

  • 變量的聲明形式為:
$a = 10;
$b = "aaa";

輸出變量的值,可以使用: echo 進行輸出查詢.
同時,變量聲明時允許互相進行嵌套, 如:

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

輸出結(jié)果為:

gaoshan
  • 除此以外, echo還可以輸出標(biāo)簽內(nèi)容
echo "<a ;
或
echo "<input type='button' value='我是一個按鈕'></input>";

那么,輸出的形式即為一個連接以及一個按鈕.

  • 有一點需要注意的是, 賦值時$c=$a表示把 a 的值賦給 c 但是對 a 本身沒有影響, 而&$c=$a 表示將 a 的儲存地址賦值給 c , 之后a 和 c 改一個,另一個就跟著一起變化.

2. 常量

參數(shù)定義

常量:不能改變的量
常量一經(jīng)定義,就不能再次被賦值
第一個參數(shù):要定義的常量名
第二個參數(shù):常量的值
第三個參數(shù):對大小寫是否 _不敏感(true)_

舉例:

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

此時,兩個輸出都為3.1415926, 但是如果將參數(shù)三的true改為false, 那么echo pi;報錯.

3. echo 特點

  • echo 后如果連接的字符串中含有變量, 那么應(yīng)根據(jù)需要使用""或者'', 在""中,"$"默認為變量的聲明符號,但是在''中,"$"默認為一個符號,以"$"原型進行輸出.

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

此時的打印結(jié)果為

我的名字叫Tom,年齡22
我的名字叫$name,年齡$age
  • 當(dāng)我們想要輸出一個對象的格式及內(nèi)容時, 通常采用的輸出函數(shù)為var_dump( ).

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

此時打印的結(jié)果為

int(22)
string(8) "hhahsdhd"
  • echo 會對輸出的值進行計算,如
echo "Z12" + "34B" + "5" + true;

此時打印的結(jié)果為

40  //0 + 34 + 5 + 1

4. 超關(guān)鍵字

可以在所有場景使用的關(guān)鍵字
如:

echo __LINE__; // 輸出此行行數(shù)
echo __FILE__; // 輸出此文件的文件地址
function show() {
 echo __FUNCTION__; // 輸出此函數(shù)的函數(shù)名
};
show(); // 輸出為 show

次超關(guān)鍵字

echo $_SERVER['HTTP_USER_AGENT']; // 打印服務(wù)器信息

定義一個類

class Person {
 public function showName() { // 函數(shù)名不區(qū)分大小寫
  echo __CLASS__; //打印出是哪個類的 結(jié)果為Person
  echo __METHOD__; // 打印出類的方法
 }
}

使用創(chuàng)建的這個類創(chuàng)建對象

$p = new Person();
echo $p -> showName(); // 結(jié)果為Person 和Person::showName

5. 字符串

介紹了一些 php 中操作字符串的常用函數(shù)

1. 字符串的連接

輸出的時候是用" . "進行連接的, 如

$str = "world";
echo $str . "hahaha";
//顯示為: worldhahaha

注:在這里, 用" . "和用" , "連接在視覺上是沒有區(qū)別的, 但是用點連接是把兩個字符串拼接為一個, 而用逗號則是把兩個字符串單純地放在一起顯示而已.

2. 獲取字符串的長度
echo strlen($str); //顯示為5
3. 判斷子字符串第一次出現(xiàn)的位置

如判斷 "bc" 在 "aabBcbc" 中出現(xiàn)的位置

echo strpos("aabBcbc", "bc"); // 輸出為 5

如果不區(qū)分大小寫

echo stripos("aabBcbc", "bc"); // 輸出為 3
4. 二進制安全的概念

_****概念 :**_ 對字符串做操作時,是否代表字符串結(jié)束的"\0"字符做處理,是停止,還是繼續(xù)往下檢查,這個特性是繼承 C語言的.

  • _****不安全:**_ 停止, 因為無法讀取\0后面的字符串
  • _****安全:**_ 把"\0"當(dāng)做字符,繼續(xù)向下讀取

舉例:

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

這里舉了一個不安全的字符串相關(guān)函數(shù),是判斷兩個字符串是否相等的. 我們看到, 在讀取第二個字符串時, 函數(shù)將"\0"后面的內(nèi)容都省略了, 判斷結(jié)果為"0", 即相等.

5. 字符串的替換
$str1 = "gaoshan@163.com";
echo str_replace("g", "s", $str1); // 這是敏感大小寫的方式
echo str_ireplace("G", "s", $str1); // 這是忽略大小寫的方式
// 以上兩個輸出的結(jié)果均為: saoshan@163.com
6. 字符串的截取

這里我們使用兩種方法:

1) substr(要做處理的字符串, 從第幾個開始截取, 截取幾個字符)
echo substr("hello world", 3, 4); // 輸出為: lo w
2) 找到字符串第一次出現(xiàn)的位置,并返回之后的字符
echo strstr("hello world", "lo"); // 輸出結(jié)果為: lo world
7. 刪除字符串前后的空格
$strT = "    hello world!!!      ";
echo trim($strT);
// 輸出結(jié)果為: hello world!!!
8. 字符串大小寫的轉(zhuǎn)化

小轉(zhuǎn)大

$strA = "FGJHGkbadkahd";
echo strtolower($strA); // 輸出結(jié)果為: fgjhgkbadkahd
echo strtoupper($strA); // 輸出結(jié)果為: FGJHGKBADKAHD
9. 倒序字符串
echo strrev("hello PHP"); // 輸出結(jié)果為: PHP olleh
10. 取出標(biāo)簽內(nèi)的內(nèi)容 / 取出含標(biāo)簽的內(nèi)容
echo strip_tags("<a href = '###'>TOM</a>");
// 輸出結(jié)果為: TOM
echo htmlspecialchars("<a href = '###'>TOM</a>");
//輸出結(jié)果為: <a href = '###'>TOM</a>

6. 數(shù)組

1. 數(shù)組的創(chuàng)建和打印
$arr = array(4, 7, 6, 2, 9);
var_dump($arr);
// 輸出結(jié)果為: array(5) { [0]=> int(4) [1]=> int(7) [2]=> int(6) [3]=> int(2) [4]=> int(9) }
2. 數(shù)組元素的訪問
echo $arr[2]; // 輸出元素為: 6
3. 添加數(shù)組元素
$arr[] = 10;
$arr[] = array('a','b');
var_dump($arr);
// 輸出結(jié)果為; 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);
// 專門用來輸出數(shù)組的函數(shù), 輸出結(jié)果為: Array ( [0] => 4 [1] => 7 [2] => 6 [3] => 2 [4] => 9 [5] => 10 [6] => Array ( [0] => a [1] => b ) )
4. 數(shù)組的標(biāo)準(zhǔn)創(chuàng)建及操作方式
$arrK=array("user"=>"TOM","password"=>"123456");

print_r($arrK);
// 輸出的結(jié)果為: Array ( [user] => TOM [password] => 123456 )

echo $arrK["user"]; // 輸出結(jié)果為: TOM

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

$arrK[] = "aaa";

print_r($arrK);
// 輸出結(jié)果為: Array ( [user] => TOM [password] => 123456 [sex] => male [0] => aaa )
5. 數(shù)組的遍歷

接4代碼

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

輸出結(jié)果為:

user的值是:TOM
password的值是:123456
sex的值是:male
0的值是:aaa
6. 刪除數(shù)組中的某個鍵值對

假設(shè)有這樣的一個數(shù)組

$arr = array("name" => "Tom", "age" => 22);
print_r($arr);
// 輸出結(jié)果為: Array ( [name] => Tom [age] => 22 )
echo json_encode($arr);
// 輸出結(jié)果為: {"name":"Tom","age":22}
//這是把數(shù)組數(shù)據(jù)轉(zhuǎn)化成 JSON 格式,方便閱讀

那么如果要刪除數(shù)組中的 name 鍵值對

unset($arr["name"]);
print_r($arr); // 輸出結(jié)果為: Array ( [age] => 22 )
7. 數(shù)組的長度
echo count($arr);
8. 判斷一個值是否在數(shù)組內(nèi)

注意:這里的有沒有,指的是值,"1"和1是等價的. 這個函數(shù)會有一個布爾返回值.

$arr1 = array(3,6,9,5,33,"10");
var_dump(in_array(33, $arr1)); // true
9. 二維數(shù)組
$arrT = array(array(11,22,33),array(44,55,66));
echo $arrT[1][2]; // 打印結(jié)果為: 66
10. 速生成一個數(shù)組
$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:  把信息打成二進制數(shù)打包發(fā)送給服務(wù)器
   -->
   用戶名: <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 一致即可
?>

當(dāng)在 HTML 文件中提交 Submit 表格時, 信息就會在 PHP 文件中被打印出來.

8. 函數(shù)

1. 函數(shù)的使用

在 php 中函數(shù)的使用和 JS 是基本相同的.

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

帶參數(shù):

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

帶返回值:

function retFunc() {
 return "lalalala";
}
echo retFunc();
2. 傳引用參數(shù)

不加 & 的時候,只是將 $a = 20;的那個20的值賦值給函數(shù),在函數(shù)中改了參數(shù)值,$a的值不變
加了 & 的時候,是將$a = 20;的地址賦給函數(shù)的參數(shù),在函數(shù)中改了參數(shù)值,$a的值變化

function varOp(&$c) {
 $c =40;
 echo $c;
}
$a = 20;
varOp($a);
echo $a;
3. 賦給函數(shù)參數(shù)默認值
function add($m, $n=9) {
 echo $m + $n;
}
add(3, 4); // 3+4
add(3); // 3+9
ADD(3); // 不區(qū)分大小寫

四. 文件控制

利用 php 可以對文件夾內(nèi)的文件進行控制操作.
首先在同一個目錄下,創(chuàng)建一個名為11.txt 的文件.

1. 打開文件

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

"r" 為 mode 形式, 聲明了可以對文件進行的處理方式.

含義
"r" 只讀方式打開,將文件指針指向文件頭。
"r+" 讀寫方式打開,將文件指針指向文件頭。
"w" 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
"w+" 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
"a" 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
"a+" 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
"x" 創(chuàng)建并以寫入方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建之。
"x+" 創(chuàng)建并以讀寫方式打開,將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級別的錯誤信息。如果文件不存在則嘗試創(chuàng)建之。

2. 讀取文件

讀取文件有以下四種方式:

1). 按字符讀取
$str = fread($f, 3);
// 讀的什么文件 , 以及一次讀多長(3個字節(jié)表示一個漢字)

可以獲取文件的大小, 全部讀取

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

按行遍歷文件

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

3. 寫入文件

一行行寫,寫入的內(nèi)容會覆蓋原內(nèi)容,如果文件本身不存在,會創(chuàng)建新文件,然后寫入.

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

如果需要整篇寫入內(nèi)容:

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

4. 關(guān)閉文件

操作完關(guān)閉文件是一個好習(xí)慣

fclose($f);

5. 拷貝文件

直接將文件拷貝一份放在原文件夾內(nèi)

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

6. 重命名文件

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

7. 刪除文件

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

五. 目錄操作

首先獲取當(dāng)前目錄

$d = opendir(".") // . 表示當(dāng)前目錄, .. 表示上級目錄

1. 打開當(dāng)前目錄

1). 依次讀取當(dāng)前目錄中的一條內(nèi)容
$str = readdir($d);
echo $str;

如果想依次讀取目錄中的幾條內(nèi)容,就將上面的代碼重復(fù)輸入.

2). 讀取并打印此目錄下的所有文件

將此目錄中的內(nèi)容循環(huán)讀取, 并依次打印

while ($str = readdir($d)) {
 echo $str . "<hr>";
}
3). 關(guān)閉文件夾
closedir($d);

2. 獲取目錄文件的數(shù)組

$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); // 將相關(guān)信息一次性打印
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容