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,而只是简单地显示文本。