📅  最后修改于: 2023-12-03 15:18:19.033000             🧑  作者: Mango
PHP7 是 PHP 语言的一个主要版本,随着发布,PHP 7 引入了许多新功能和改进。然而,PHP 7 中还有许多过时的功能已经废弃或不推荐使用。本文将介绍 PHP 7 不推荐使用的功能。
magic_quotes_gpc 是一种用于过滤输入数据的机制,它在 PHP 7 中已经被弃用了。虽然早期版本的 PHP 中使用它可以避免 SQL 注入攻击等安全问题,但是现在开发者们更倾向于采用预编译语句来防范 SQL 注入攻击等安全问题。如果你在使用 PHP 7,不推荐再使用 magic_quotes_gpc。
ereg 是一种正则表达式的函数,用于匹配字符串。不过,在 PHP 7 中,ereg 已经被弃用。相应的替代函数是 preg_match。
下面是 ereg 与 preg_match 的对比:
// ereg
if (ereg('^([a-zA-Z0-9_\-\.]+)@(([0-9a-zA-Z-]+\.)+[a-zA-Z]{2,63})$', $email)) {
echo "Email address is valid.";
}
// preg_match
if (preg_match('/^([a-zA-Z0-9_\-\.]+)@(([0-9a-zA-Z-]+\.)+[a-zA-Z]{2,63})$/', $email)) {
echo "Email address is valid.";
}
在 PHP 7 中,不再推荐使用 iconv 和 mbstring 函数来处理字符编码。相应的推荐替代品是记在和 Intl 扩展。
如下所示:
// iconv
$utf8String = iconv('ISO-8859-1', 'UTF-8', $latin1String);
// mbstring
$utf8String = mb_convert_encoding($latin1String, 'UTF-8', 'ISO-8859-1');
// intl
$utf8String = IntlChar::chr(0x1F60A); // Unicode Smiling face with smiling eyes
mcrypt 是 PHP 中的一种加密函数,用于加密和解密数据。然而,它在 PHP 7 中已经被废弃,因为认为它有安全问题。取而代之的是 sodium 扩展来提供加密算法库。
如下所示:
// Before PHP 7
$key = 'secret_key';
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $plain_text, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
// After PHP 7
$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = sodium_crypto_secretbox($plain_text, $nonce, $key);
$decrypted = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
$argv 和 $argc 是 PHP 中的两个全局变量,它们用于从命令行中获取参数。这两个变量在 PHP 7 中仍然能够使用,但不建议使用它们,而是建议使用 getopt 函数或库或其他命令行解析器。
下面是 getopt 的示例:
// Example command-line call: php myscript.php --inputfile=myfile.txt --outputfile=myfile.txt --mode=2
$options = getopt("i:o:m:");
$inputFile = isset($options['i']) ? $options['i'] : '';
$outputFile = isset($options['o']) ? $options['o'] : '';
$mode = isset($options['m']) ? $options['m'] : 1;