100 个常见的 PHP 面试题和答案

时间:2020-05-01

如何使用 GET 方法访问通过 URL 发送的数据?

$a = $_GET['a'] ?? '';
echo $a;

如何使用 POST 方法访问通过 URL 发送的数据?

$a = $_POST['a'] ?? '';
echo $a;

如何检查给定变量的值为数字?

is_int — 检测变量是否是整数

is_numeric — 检测变量是否为数字或数字字符串

如何检查给定变量的值为字母和数字字符?

ctype_alnum — 做字母和数字字符检测

  • ctype_alnum — 做字母和数字字符检测
  • ctype_alpha — 做纯字符检测
  • ctype_cntrl — 做控制字符检测
  • ctype_digit — 做纯数字检测
  • ctype_graph — 做可打印字符串检测,空格除外
  • ctype_lower — 做小写字符检测
  • ctype_print — 做可打印字符检测
  • ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母
  • ctype_space — 做空白字符检测
  • ctype_upper — 做大写字母检测
  • ctype_xdigit — 检测字符串是否只包含十六进制字符

如何检查给定变量是否为空?

empty — 检查一个变量是否为空

unlink () 函数的作用是?

unlink — 删除文件

unset () 函数的作用是?

unset — 释放给定的变量

unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

在将数据存储到数据库之前如何转义数据?

addslashes — 使用反斜线引用字符串

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。强烈建议使用 DBMS 指定的转义函数(比如 MySQL 是 mysqli_real_escape_string(),PostgreSQL 是 pg_escape_string()),但是如果你使用的 DBMS 没有一个转义函数,并且使用 \ 来转义特殊字符,你可以使用这个函数。仅仅是为了获取插入数据库的数据,额外的 \ 并不会插入。

如何从字符串中删除转义字符?

stripcslashes — 反引用一个使用 addcslashes() 转义的字符串

我们如何自动转义传入的数据?

PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。

get_magic_quotes_gpc () 函数的作用是?

get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置

如果 magic_quotes_gpc 为关闭时返回 0,否则返回 1。在 PHP 5.4.0 起将始终返回 FALSE。

是否可以从数据中删除 HTML 标签?

strip_tags — 从字符串中去除 HTML 和 PHP 标记

函数中的静态变量有什么用?

静态变量仅在函数中首次定义,并且其值可以在函数调用期间进行修改

function test()
{
    static $a = 1;
    $b = 1;
    $a++;
    $b++;
    echo '$a=' . $a . '<br>';
    echo '$b=' . $b . '<br>';
}

test();
test();
test();

如何定义 PHP 脚本函数中可访问的变量?

$a = 1;
function test()
{
    global $a;
    echo $a;
}

test();

如何从函数中返回值?

$a = 1;
function test()
{
    global $a;
    return $a;
}

用于哈希密码最便捷的哈希方法是什么?

最好使用本身支持几种哈希算法的 crypt () 或支持比 crypt () 更多变体的函数 hash (),而不是使用常见的哈希算法,如 MD5、SHA1 或 sha256,因为它们被认为是存在安全问题的。因此,使用这些算法的哈希密码可能会产生漏洞。

哪种加密扩展可以生成和验证数字签名?

PHP-OpenSSL 扩展提供了几种加密操作,包括数字签名的生成和验证

如何在 PHP 脚本中定义常量?

define — 定义一个常量