1 需求
2 basename
在 PHP 中,
basename()
?函數用于返回路徑中的文件名部分。如果路徑中包含了文件擴展名,則該函數也會返回它。如果路徑的結尾有斜杠(/
)或反斜杠(\
),則?basename()
?函數會返回空字符串。函數的基本語法是:
string basename ( string $path [, string $suffix ] )
$path
?是必需的參數,指定了需要處理的路徑。$suffix
?是可選的參數,如果你指定了一個字符串作為后綴,并且這個后綴在文件名的末尾,那么它會被去除。示例:
// 不帶后綴參數 $path = "/home/username/documents/myfile.txt"; $filename = basename($path); echo $filename; // 輸出: myfile.txt// 帶有后綴參數 $filename = basename($path, ".txt"); echo $filename; // 輸出: myfile// 如果路徑以斜杠結尾 $path = "/home/username/documents/"; $filename = basename($path); echo $filename; // 輸出: (空字符串)
注意,
basename()
?函數并不檢查文件或目錄是否真的存在,它只是根據提供的路徑字符串進行字符串操作。因此,即使?$path
?指向的文件或目錄不存在,basename()
?仍然會返回路徑中的文件名部分。此外,如果你正在處理用戶輸入或不可信的路徑,你應該始終驗證和清理這些路徑,以防止潛在的安全風險,如目錄遍歷攻擊(也稱為路徑遍歷或本地文件包含)。
2?pathinfo
在 PHP 中,
strtolower()
?函數用于將字符串中的所有字符轉換為小寫,而?pathinfo()
?函數用于返回文件路徑的信息。當你將?pathinfo()
?與?PATHINFO_EXTENSION
?常量一起使用時,它會返回文件路徑的擴展名部分。將這兩個函數結合起來,
strtolower(pathinfo($target_file, PATHINFO_EXTENSION))
?的作用是獲取?$target_file
?變量中指定的文件的擴展名,并將其轉換為小寫。這里是一個示例:
$target_file = "uploads/myfile.JPG"; // 假設這是你的文件路徑// 使用 pathinfo 獲取擴展名,并使用 strtolower 轉換為小寫 $extension = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));echo $extension; // 輸出: jpg
在上面的示例中,
$target_file
?變量包含了一個文件路徑,其中文件的擴展名是 "JPG"。通過調用?pathinfo($target_file, PATHINFO_EXTENSION)
,我們獲取了擴展名 "JPG"。然后,我們使用?strtolower()
?函數將其轉換為小寫,得到了 "jpg"。最后,我們將結果存儲在?$extension
?變量中并輸出它。
2?htmlspecialchars
在 PHP 中,
htmlspecialchars()
?函數用于將特殊字符轉換為 HTML 實體。這樣做是為了防止跨站腳本攻擊(XSS)和其他安全漏洞,通過確保這些特殊字符在 HTML 上下文中被正確地轉義。特殊字符包括:
&
?(和號) 轉換為?&
"
?(雙引號) 轉換為?"
(只有當?ENT_QUOTES
?被設置時)'
?(單引號) 轉換為?'
(在 PHP 5.4.0 之前的版本中,只有當?ENT_QUOTES
?被設置時;在 PHP 5.4.0 及更高版本中,總是如此)<
?(小于號) 轉換為?<
>
?(大于號) 轉換為?>
函數的語法如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
$string
:需要轉換的字符串。$flags
:一個位掩碼,指定如何轉換字符串。可能的值包括?ENT_HTML401
(默認,處理 HTML 4.01)、ENT_HTML5
(處理 HTML 5)、ENT_XHTML
(處理 XHTML)、ENT_QUOTES
(轉義單引號和雙引號)等。$encoding
:指定使用的字符編碼。默認是?ini_get("default_charset")
(通常是 UTF-8)。$double_encode
:當設置為?false
?時,防止已經存在的 HTML 實體被雙重編碼。默認為?true
。使用?
htmlspecialchars()
?的示例:
$user_input = '<script>alert("XSS!");</script>'; $safe_output = htmlspecialchars($user_input);echo $safe_output; // 輸出:<script>alert("XSS!");</script>
在這個例子中,
<script>
?標簽和其中的 JavaScript 代碼被轉義成了無害的 HTML 實體,從而防止了 XSS 攻擊。當這段代碼被瀏覽器渲染時,它不會執行 JavaScript,而只是簡單地顯示文本。